High performance interconnect physical layer

ABSTRACT

A serial data link is to be adapted during initialization of the link. Adaptation of the link is to include receiving a pseudorandom binary sequence (PRBS) from a remote agent, analyzing the PRBS to identify characteristics of the data link, and generating metric data describing the characteristics.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation (and claims the benefit of priorityunder 35 U.S.C. §120) of U.S. patent application Ser. No. 13/976,971,with a U.S. 371 filing date of Jun. 27, 2013 and an effective filingdate of Mar. 15, 2013, entitled HIGH PERFORMANCE INTERCONNECT PHYSICALLAYER, which application is a national stage application under 35 U.S.C.§371 of PCT International Application Serial No. PCT/US2013/032708,filed on Mar. 15, 2013, which application claims the benefit of priorityto U.S. Provisional Patent Application Ser. No. 61/717,091 filed on Oct.22, 2012. The disclosures of the prior applications are considered partof and are hereby incorporated by reference in their entirety in thedisclosure of this application.

FIELD

The present disclosure relates in general to the field of computerdevelopment, and more specifically, to software development involvingcoordination of mutually-dependent constrained systems.

BACKGROUND

Advances in semi-conductor processing and logic design have permitted anincrease in the amount of logic that may be present on integratedcircuit devices. As a corollary, computer system configurations haveevolved from a single or multiple integrated circuits in a system tomultiple cores, multiple hardware threads, and multiple logicalprocessors present on individual integrated circuits, as well as otherinterfaces integrated within such processors. A processor or integratedcircuit typically comprises a single physical processor die, where theprocessor die may include any number of cores, hardware threads, logicalprocessors, interfaces, memory, controller hubs, etc.

As a result of the greater ability to fit more processing power insmaller packages, smaller computing devices have increased inpopularity. Smartphones, tablets, ultrathin notebooks, and other userequipment have grown exponentially. However, these smaller devices arereliant on servers both for data storage and complex processing thatexceeds the form factor. Consequently, the demand in thehigh-performance computing market (i.e. server space) has alsoincreased. For instance, in modern servers, there is typically not onlya single processor with multiple cores, but also multiple physicalprocessors (also referred to as multiple sockets) to increase thecomputing power. But as the processing power grows along with the numberof devices in a computing system, the communication between sockets andother devices becomes more critical.

In fact, interconnects have grown from more traditional multi-drop busesthat primarily handled electrical communications to full blowninterconnect architectures that facilitate fast communication.Unfortunately, as the demand for future processors to consume at evenhigher-rates corresponding demand is placed on the capabilities ofexisting interconnect architectures.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a simplified block diagram of a system including aserial point-to-point interconnect to connect I/O devices in a computersystem in accordance with one embodiment;

FIG. 2 illustrates a simplified block diagram of a layered protocolstack in accordance with one embodiment;

FIG. 3 illustrates an embodiment of a transaction descriptor.

FIG. 4 illustrates an embodiment of a serial point-to-point link.

FIG. 5 illustrates embodiments of potential High PerformanceInterconnect (HPI) system configurations.

FIG. 6 illustrates an embodiment of a layered protocol stack associatedwith HPI.

FIG. 7 illustrates a representation of an example state machine.

FIG. 8 illustrates example control supersequences.

FIG. 9 illustrates a flow diagram of an example transition to a partialwidth state.

FIG. 10 illustrates a schematic diagram of an example pattern generator.

FIG. 11 illustrates an embodiment of a block diagram for a computingsystem including a multicore processor.

FIG. 12 illustrates another embodiment of a block diagram for acomputing system including a multicore processor.

FIG. 13 illustrates an embodiment of a block diagram for a processor.

FIG. 14 illustrates another embodiment of a block diagram for acomputing system including a processor.

FIG. 15 illustrates an embodiment of a block for a computing systemincluding multiple processor sockets.

FIG. 16 illustrates another embodiment of a block diagram for acomputing system.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

In the following description, numerous specific details are set forth,such as examples of specific types of processors and systemconfigurations, specific hardware structures, specific architectural andmicro architectural details, specific register configurations, specificinstruction types, specific system components, specific processorpipeline stages, specific interconnect layers, specificpacket/transaction configurations, specific transaction names, specificprotocol exchanges, specific link widths, specific implementations, andoperation etc. in order to provide a thorough understanding of thepresent invention. It may be apparent, however, to one skilled in theart that these specific details need not necessarily be employed topractice the subject matter of the present disclosure. In otherinstances, well detailed description of known components or methods hasbeen avoided, such as specific and alternative processor architectures,specific logic circuits/code for described algorithms, specific firmwarecode, low-level interconnect operation, specific logic configurations,specific manufacturing techniques and materials, specific compilerimplementations, specific expression of algorithms in code, specificpower down and gating techniques/logic and other specific operationaldetails of computer system in order to avoid unnecessarily obscuring thepresent disclosure.

Although the following embodiments may be described with reference toenergy conservation, energy efficiency, processing efficiency, and so onin specific integrated circuits, such as in computing platforms ormicroprocessors, other embodiments are applicable to other types ofintegrated circuits and logic devices. Similar techniques and teachingsof embodiments described herein may be applied to other types ofcircuits or semiconductor devices that may also benefit from suchfeatures. For example, the disclosed embodiments are not limited toserver computer system, desktop computer systems, laptops, Ultrabooks™,but may be also used in other devices, such as handheld devices,smartphones, tablets, other thin notebooks, systems on a chip (SOC)devices, and embedded applications. Some examples of handheld devicesinclude cellular phones, Internet protocol devices, digital cameras,personal digital assistants (PDAs), and handheld PCs. Here, similartechniques for a high-performance interconnect may be applied toincrease performance (or even save power) in a low power interconnect.Embedded applications typically include a microcontroller, a digitalsignal processor (DSP), a system on a chip, network computers (NetPC),set-top boxes, network hubs, wide area network (WAN) switches, or anyother system that can perform the functions and operations taught below.Moreover, the apparatus', methods, and systems described herein are notlimited to physical computing devices, but may also relate to softwareoptimizations for energy conservation and efficiency. As may becomereadily apparent in the description below, the embodiments of methods,apparatus', and systems described herein (whether in reference tohardware, firmware, software, or a combination thereof) may beconsidered vital to a “green technology” future balanced withperformance considerations.

As computing systems are advancing, the components therein are becomingmore complex. The interconnect architecture to couple and communicatebetween the components has also increased in complexity to ensurebandwidth demand is met for optimal component operation. Furthermore,different market segments demand different aspects of interconnectarchitectures to suit the respective market. For example, serversrequire higher performance, while the mobile ecosystem is sometimes ableto sacrifice overall performance for power savings. Yet, it is asingular purpose of most fabrics to provide highest possible performancewith maximum power saving. Further, a variety of different interconnectscan potentially benefit from subject matter described herein.

The Peripheral Component Interconnect (PCI) Express (PCIe) interconnectfabric architecture and QuickPath Interconnect (QPI) fabricarchitecture, among other examples, can potentially be improvedaccording to one or more principles described herein, among otherexamples. For instance, a primary goal of PCIe is to enable componentsand devices from different vendors to inter-operate in an openarchitecture, spanning multiple market segments; Clients (Desktops andMobile), Servers (Standard and Enterprise), and Embedded andCommunication devices. PCI Express is a high performance, generalpurpose I/O interconnect defined for a wide variety of future computingand communication platforms. Some PCI attributes, such as its usagemodel, load-store architecture, and software interfaces, have beenmaintained through its revisions, whereas previous parallel busimplementations have been replaced by a highly scalable, fully serialinterface. The more recent versions of PCI Express take advantage ofadvances in point-to-point interconnects, Switch-based technology, andpacketized protocol to deliver new levels of performance and features.Power Management, Quality Of Service (QoS), Hot-Plug/Hot-Swap support,Data Integrity, and Error Handling are among some of the advancedfeatures supported by PCI Express. Although the primary discussionherein is in reference to a new high-performance interconnect (HPI)architecture, aspects of the invention described herein may be appliedto other interconnect architectures, such as a PCIe-compliantarchitecture, a QPI-compliant architecture, a MIPI compliantarchitecture, a high-performance architecture, or other knowninterconnect architecture.

Referring to FIG. 1, an embodiment of a fabric composed ofpoint-to-point Links that interconnect a set of components isillustrated. System 100 includes processor 105 and system memory 110coupled to controller hub 115. Processor 105 can include any processingelement, such as a microprocessor, a host processor, an embeddedprocessor, a co-processor, or other processor. Processor 105 is coupledto controller hub 115 through front-side bus (FSB) 106. In oneembodiment, FSB 106 is a serial point-to-point interconnect as describedbelow. In another embodiment, link 106 includes a serial, differentialinterconnect architecture that is compliant with different interconnectstandard.

System memory 110 includes any memory device, such as random accessmemory (RAM), non-volatile (NV) memory, or other memory accessible bydevices in system 100. System memory 110 is coupled to controller hub115 through memory interface 116. Examples of a memory interface includea double-data rate (DDR) memory interface, a dual-channel DDR memoryinterface, and a dynamic RAM (DRAM) memory interface.

In one embodiment, controller hub 115 can include a root hub, rootcomplex, or root controller, such as in a PCIe interconnectionhierarchy. Examples of controller hub 115 include a chipset, a memorycontroller hub (MCH), a northbridge, an interconnect controller hub(ICH) a southbridge, and a root controller/hub. Often the term chipsetrefers to two physically separate controller hubs, e.g., a memorycontroller hub (MCH) coupled to an interconnect controller hub (ICH).Note that current systems often include the MCH integrated withprocessor 105, while controller 115 is to communicate with I/O devices,in a similar manner as described below. In some embodiments,peer-to-peer routing is optionally supported through root complex 115.

Here, controller hub 115 is coupled to switch/bridge 120 through seriallink 119. Input/output modules 117 and 121, which may also be referredto as interfaces/ports 117 and 121, can include/implement a layeredprotocol stack to provide communication between controller hub 115 andswitch 120. In one embodiment, multiple devices are capable of beingcoupled to switch 120.

Switch/bridge 120 routes packets/messages from device 125 upstream, i.e.up a hierarchy towards a root complex, to controller hub 115 anddownstream, i.e. down a hierarchy away from a root controller, fromprocessor 105 or system memory 110 to device 125. Switch 120, in oneembodiment, is referred to as a logical assembly of multiple virtualPCI-to-PCI bridge devices. Device 125 includes any internal or externaldevice or component to be coupled to an electronic system, such as anI/O device, a Network Interface Controller (NIC), an add-in card, anaudio processor, a network processor, a hard-drive, a storage device, aCD/DVD ROM, a monitor, a printer, a mouse, a keyboard, a router, aportable storage device, a Firewire device, a Universal Serial Bus (USB)device, a scanner, and other input/output devices. Often in the PCIevernacular, such as device, is referred to as an endpoint. Although notspecifically shown, device 125 may include a bridge (e.g., a PCIe toPCI/PCI-X bridge) to support legacy or other versions of devices orinterconnect fabrics supported by such devices.

Graphics accelerator 130 can also be coupled to controller hub 115through serial link 132. In one embodiment, graphics accelerator 130 iscoupled to an MCH, which is coupled to an ICH. Switch 120, andaccordingly I/O device 125, is then coupled to the ICH. I/O modules 131and 118 are also to implement a layered protocol stack to communicatebetween graphics accelerator 130 and controller hub 115. Similar to theMCH discussion above, a graphics controller or the graphics accelerator130 itself may be integrated in processor 105.

Turning to FIG. 2 an embodiment of a layered protocol stack isillustrated. Layered protocol stack 200 can includes any form of alayered communication stack, such as a QPI stack, a PCIe stack, a nextgeneration high performance computing interconnect (HPI) stack, or otherlayered stack. In one embodiment, protocol stack 200 can includetransaction layer 205, link layer 210, and physical layer 220. Aninterface, such as interfaces 117, 118, 121, 122, 126, and 131 in FIG.1, may be represented as communication protocol stack 200.Representation as a communication protocol stack may also be referred toas a module or interface implementing/including a protocol stack.

Packets can be used to communicate information between components.Packets can be formed in the Transaction Layer 205 and Data Link Layer210 to carry the information from the transmitting component to thereceiving component. As the transmitted packets flow through the otherlayers, they are extended with additional information used to handlepackets at those layers. At the receiving side the reverse processoccurs and packets get transformed from their Physical Layer 220representation to the Data Link Layer 210 representation and finally(for Transaction Layer Packets) to the form that can be processed by theTransaction Layer 205 of the receiving device.

In one embodiment, transaction layer 205 can provide an interfacebetween a device's processing core and the interconnect architecture,such as Data Link Layer 210 and Physical Layer 220. In this regard, aprimary responsibility of the transaction layer 205 can include theassembly and disassembly of packets (i.e., transaction layer packets, orTLPs). The translation layer 205 can also manage credit-based flowcontrol for TLPs. In some implementations, split transactions can beutilized, i.e., transactions with request and response separated bytime, allowing a link to carry other traffic while the target devicegathers data for the response, among other examples.

Credit-based flow control can be used to realize virtual channels andnetworks utilizing the interconnect fabric. In one example, a device canadvertise an initial amount of credits for each of the receive buffersin Transaction Layer 205. An external device at the opposite end of thelink, such as controller hub 115 in FIG. 1, can count the number ofcredits consumed by each TLP. A transaction may be transmitted if thetransaction does not exceed a credit limit. Upon receiving a response anamount of credit is restored. One example of an advantage of such acredit scheme is that the latency of credit return does not affectperformance, provided that the credit limit is not encountered, amongother potential advantages.

In one embodiment, four transaction address spaces can include aconfiguration address space, a memory address space, an input/outputaddress space, and a message address space. Memory space transactionsinclude one or more of read requests and write requests to transfer datato/from a memory-mapped location. In one embodiment, memory spacetransactions are capable of using two different address formats, e.g., ashort address format, such as a 32-bit address, or a long addressformat, such as 64-bit address. Configuration space transactions can beused to access configuration space of various devices connected to theinterconnect. Transactions to the configuration space can include readrequests and write requests. Message space transactions (or, simplymessages) can also be defined to support in-band communication betweeninterconnect agents. Therefore, in one example embodiment, transactionlayer 205 can assemble packet header/payload 206.

Quickly referring to FIG. 3, an example embodiment of a transactionlayer packet descriptor is illustrated. In one embodiment, transactiondescriptor 300 can be a mechanism for carrying transaction information.In this regard, transaction descriptor 300 supports identification oftransactions in a system. Other potential uses include trackingmodifications of default transaction ordering and association oftransaction with channels. For instance, transaction descriptor 300 caninclude global identifier field 302, attributes field 304 and channelidentifier field 306. In the illustrated example, global identifierfield 302 is depicted comprising local transaction identifier field 308and source identifier field 310. In one embodiment, global transactionidentifier 302 is unique for all outstanding requests.

According to one implementation, local transaction identifier field 308is a field generated by a requesting agent, and can be unique for alloutstanding requests that require a completion for that requestingagent. Furthermore, in this example, source identifier 310 uniquelyidentifies the requestor agent within an interconnect hierarchy.Accordingly, together with source ID 310, local transaction identifier308 field provides global identification of a transaction within ahierarchy domain.

Attributes field 304 specifies characteristics and relationships of thetransaction. In this regard, attributes field 304 is potentially used toprovide additional information that allows modification of the defaulthandling of transactions. In one embodiment, attributes field 304includes priority field 312, reserved field 314, ordering field 316, andno-snoop field 318. Here, priority sub-field 312 may be modified by aninitiator to assign a priority to the transaction. Reserved attributefield 314 is left reserved for future, or vendor-defined usage. Possibleusage models using priority or security attributes may be implementedusing the reserved attribute field.

In this example, ordering attribute field 316 is used to supply optionalinformation conveying the type of ordering that may modify defaultordering rules. According to one example implementation, an orderingattribute of “0” denotes default ordering rules are to apply, wherein anordering attribute of “1” denotes relaxed ordering, wherein writes canpass writes in the same direction, and read completions can pass writesin the same direction. Snoop attribute field 318 is utilized todetermine if transactions are snooped. As shown, channel ID Field 306identifies a channel that a transaction is associated with.

Returning to the discussion of FIG. 2, a Link layer 210, also referredto as data link layer 210, can act as an intermediate stage betweentransaction layer 205 and the physical layer 220. In one embodiment, aresponsibility of the data link layer 210 is providing a reliablemechanism for exchanging Transaction Layer Packets (TLPs) between twocomponents on a link. One side of the Data Link Layer 210 accepts TLPsassembled by the Transaction Layer 205, applies packet sequenceidentifier 211, i.e. an identification number or packet number,calculates and applies an error detection code, i.e. CRC 212, andsubmits the modified TLPs to the Physical Layer 220 for transmissionacross a physical to an external device.

In one example, physical layer 220 includes logical sub block 221 andelectrical sub-block 222 to physically transmit a packet to an externaldevice. Here, logical sub-block 221 is responsible for the “digital”functions of Physical Layer 221. In this regard, the logical sub-blockcan include a transmit section to prepare outgoing information fortransmission by physical sub-block 222, and a receiver section toidentify and prepare received information before passing it to the LinkLayer 210.

Physical block 222 includes a transmitter and a receiver. Thetransmitter is supplied by logical sub-block 221 with symbols, which thetransmitter serializes and transmits onto to an external device. Thereceiver is supplied with serialized symbols from an external device andtransforms the received signals into a bit-stream. The bit-stream isde-serialized and supplied to logical sub-block 221. In one exampleembodiment, an 8b/10b transmission code is employed, where ten-bitsymbols are transmitted/received. Here, special symbols are used toframe a packet with frames 223. In addition, in one example, thereceiver also provides a symbol clock recovered from the incoming serialstream.

As stated above, although transaction layer 205, link layer 210, andphysical layer 220 are discussed in reference to a specific embodimentof a protocol stack (such as a PCIe protocol stack), a layered protocolstack is not so limited. In fact, any layered protocol may beincluded/implemented and adopt features discussed herein. As an example,a port/interface that is represented as a layered protocol can include:(1) a first layer to assemble packets, i.e. a transaction layer; asecond layer to sequence packets, i.e. a link layer; and a third layerto transmit the packets, i.e. a physical layer. As a specific example, ahigh performance interconnect layered protocol, as described herein, isutilized.

Referring next to FIG. 4, an example embodiment of a serial point topoint fabric is illustrated. A serial point-to-point link can includeany transmission path for transmitting serial data. In the embodimentshown, a link can include two, low-voltage, differentially driven signalpairs: a transmit pair 406/411 and a receive pair 412/407. Accordingly,device 405 includes transmission logic 406 to transmit data to device410 and receiving logic 407 to receive data from device 410. In otherwords, two transmitting paths, i.e. paths 416 and 417, and two receivingpaths, i.e. paths 418 and 419, are included in some implementations of alink.

A transmission path refers to any path for transmitting data, such as atransmission line, a copper line, an optical line, a wirelesscommunication channel, an infrared communication link, or othercommunication path. A connection between two devices, such as device 405and device 410, is referred to as a link, such as link 415. A link maysupport one lane—each lane representing a set of differential signalpairs (one pair for transmission, one pair for reception). To scalebandwidth, a link may aggregate multiple lanes denoted by xN, where N isany supported link width, such as 1, 2, 4, 8, 12, 16, 32, 64, or wider.

A differential pair can refer to two transmission paths, such as lines416 and 417, to transmit differential signals. As an example, when line416 toggles from a low voltage level to a high voltage level, i.e. arising edge, line 417 drives from a high logic level to a low logiclevel, i.e. a falling edge. Differential signals potentially demonstratebetter electrical characteristics, such as better signal integrity, i.e.cross-coupling, voltage overshoot/undershoot, ringing, among otherexample advantages. This allows for a better timing window, whichenables faster transmission frequencies.

In one embodiment, a new High Performance Interconnect (HPI) isprovided. HPI can include a next-generation cache-coherent, link-basedinterconnect. As one example, HPI may be utilized in high performancecomputing platforms, such as workstations or servers, including insystems where PCIe or another interconnect protocol is typically used toconnect processors, accelerators, I/O devices, and the like. However,HPI is not so limited. Instead, HPI may be utilized in any of thesystems or platforms described herein. Furthermore, the individual ideasdeveloped may be applied to other interconnects and platforms, such asPCIe, MIPI, QPI, etc.

To support multiple devices, in one example implementation, HPI caninclude an Instruction Set Architecture (ISA) agnostic (i.e. HPI is ableto be implemented in multiple different devices). In another scenario,HPI may also be utilized to connect high performance I/O devices, notjust processors or accelerators. For example, a high performance PCIedevice may be coupled to HPI through an appropriate translation bridge(i.e. HPI to PCIe). Moreover, the HPI links may be utilized by many HPIbased devices, such as processors, in various ways (e.g. stars, rings,meshes, etc.). FIG. 5 illustrates example implementations of multiplepotential multi-socket configurations. A two-socket configuration 505,as depicted, can include two HPI links; however, in otherimplementations, one HPI link may be utilized. For larger topologies,any configuration may be utilized as long as an identifier (ID) isassignable and there is some form of virtual path, among otheradditional or substitute features. As shown, in one example, a foursocket configuration 510 has an HPI link from each processor to another.But in the eight socket implementation shown in configuration 515, notevery socket is directly connected to each other through an HPI link.However, if a virtual path or channel exists between the processors, theconfiguration is supported. A range of supported processors includes2-32 in a native domain. Higher numbers of processors may be reachedthrough use of multiple domains or other interconnects between nodecontrollers, among other examples.

The HPI architecture includes a definition of a layered protocolarchitecture, including in some examples, protocol layers (coherent,non-coherent, and, optionally, other memory based protocols), a routinglayer, a link layer, and a physical layer. Furthermore, HPI can furtherinclude enhancements related to power managers (such as power controlunits (PCUs)), design for test and debug (DFT), fault handling,registers, security, among other examples. FIG. 5 illustrates anembodiment of an example HPI layered protocol stack. In someimplementations, at least some of the layers illustrated in FIG. 5 maybe optional. Each layer deals with its own level of granularity orquantum of information (the protocol layer 605 a,b with packets 630,link layer 610 a,b with flits 635, and physical layer 605 a,b with phits640). Note that a packet, in some embodiments, may include partialflits, a single flit, or multiple flits based on the implementation.

As a first example, a width of a phit 640 includes a 1 to 1 mapping oflink width to bits (e.g. 20 bit link width includes a phit of 20 bits,etc.). Flits may have a greater size, such as 184, 192, or 200 bits.Note that if phit 640 is 20 bits wide and the size of flit 635 is 184bits then it takes a fractional number of phits 640 to transmit one flit635 (e.g. 9.2 phits at 20 bits to transmit an 184 bit flit 635 or 9.6 at20 bits to transmit a 192 bit flit, among other examples). Note thatwidths of the fundamental link at the physical layer may vary. Forexample, the number of lanes per direction may include 2, 4, 6, 8, 10,12, 14, 16, 18, 20, 22, 24, etc. In one embodiment, link layer 610 a,bis capable of embedding multiple pieces of different transactions in asingle flit, and one or multiple headers (e.g. 1, 2, 3, 4) may beembedded within the flit. In one example, HPI splits the headers intocorresponding slots to enable multiple messages in the flit destined fordifferent nodes.

Physical layer 605 a,b, in one embodiment, can be responsible for thefast transfer of information on the physical medium (electrical oroptical etc.). The physical link can be point-to-point between two Linklayer entities, such as layer 605 a and 605 b. The Link layer 610 a,bcan abstract the Physical layer 605 a,b from the upper layers andprovides the capability to reliably transfer data (as well as requests)and manage flow control between two directly connected entities. TheLink Layer can also be responsible for virtualizing the physical channelinto multiple virtual channels and message classes. The Protocol layer620 a,b relies on the Link layer 610 a,b to map protocol messages intothe appropriate message classes and virtual channels before handing themto the Physical layer 605 a,b for transfer across the physical links.Link layer 610 a,b may support multiple messages, such as a request,snoop, response, writeback, non-coherent data, among other examples.

The Physical layer 605 a,b (or PHY) of HPI can be implemented above theelectrical layer (i.e. electrical conductors connecting two components)and below the link layer 610 a,b, as illustrated in FIG. 6. The Physicallayer and corresponding logic can reside on each agent and connects thelink layers on two agents (A and B) separated from each other (e.g. ondevices on either side of a link). The local and remote electricallayers are connected by physical media (e.g. wires, conductors, optical,etc.). The Physical layer 605 a,b, in one embodiment, has two majorphases, initialization and operation. During initialization, theconnection is opaque to the link layer and signaling may involve acombination of timed states and handshake events. During operation, theconnection is transparent to the link layer and signaling is at a speed,with all lanes operating together as a single link. During the operationphase, the Physical layer transports flits from agent A to agent B andfrom agent B to agent A. The connection is also referred to as a linkand abstracts some physical aspects including media, width and speedfrom the link layers while exchanging flits and control/status ofcurrent configuration (e.g. width) with the link layer. Theinitialization phase includes minor phases e.g. Polling, Configuration.The operation phase also includes minor phases (e.g. link powermanagement states).

In one embodiment, Link layer 610 a,b can be implemented so as toprovide reliable data transfer between two protocol or routing entities.The Link layer can abstract Physical layer 605 a,b from the Protocollayer 620 a,b, and can be responsible for the flow control between twoprotocol agents (A, B), and provide virtual channel services to theProtocol layer (Message Classes) and Routing layer (Virtual Networks).The interface between the Protocol layer 620 a,b and the Link Layer 610a,b can typically be at the packet level. In one embodiment, thesmallest transfer unit at the Link Layer is referred to as a flit whicha specified number of bits, such as 192 bits or some other denomination.The Link Layer 610 a,b relies on the Physical layer 605 a,b to frame thePhysical layer's 605 a,b unit of transfer (phit) into the Link Layer's610 a,b unit of transfer (flit). In addition, the Link Layer 610 a,b maybe logically broken into two parts, a sender and a receiver. Asender/receiver pair on one entity may be connected to a receiver/senderpair on another entity. Flow Control is often performed on both a flitand a packet basis. Error detection and correction is also potentiallyperformed on a flit level basis.

In one embodiment, Routing layer 615 a,b can provide a flexible anddistributed method to route HPI transactions from a source to adestination. The scheme is flexible since routing algorithms formultiple topologies may be specified through programmable routing tablesat each router (the programming in one embodiment is performed byfirmware, software, or a combination thereof). The routing functionalitymay be distributed; the routing may be done through a series of routingsteps, with each routing step being defined through a lookup of a tableat either the source, intermediate, or destination routers. The lookupat a source may be used to inject a HPI packet into the HPI fabric. Thelookup at an intermediate router may be used to route an HPI packet froman input port to an output port. The lookup at a destination port may beused to target the destination HPI protocol agent. Note that the Routinglayer, in some implementations, can be thin since the routing tables,and, hence the routing algorithms, are not specifically defined byspecification. This allows for flexibility and a variety of usagemodels, including flexible platform architectural topologies to bedefined by the system implementation. The Routing layer 615 a,b relieson the Link layer 610 a,b for providing the use of up to three (or more)virtual networks (VNs)—in one example, two deadlock-free VNs, VN0 andVN1 with several message classes defined in each virtual network. Ashared adaptive virtual network (VNA) may be defined in the Link layer,but this adaptive network may not be exposed directly in routingconcepts, since each message class and virtual network may havededicated resources and guaranteed forward progress, among otherfeatures and examples.

In some implementations, HPI can utilize an embedded clock. A clocksignal can be embedded in data transmitted using the interconnect. Withthe clock signal embedded in the data, distinct and dedicated clocklanes can be omitted. This can be useful, for instance, as it can allowmore pins of a device to be dedicated to data transfer, particularly insystems where space for pins is at a premium.

A link can be established between two agents on either side of aninterconnect. An agent sending data can be a local agent and the agentreceiving the data can be a remote agent. State machines can be employedby both agents to manage various aspects of the link. In one embodiment,the Physical layer datapath can transmit flits from the link layer tothe electrical front-end. The control path, in one implementation,includes a state machine (also referred to as a link training statemachine or the similar). The state machine's actions and exits fromstates may depend on internal signals, timers, external signals or otherinformation. In fact, some of the states, such as a few initializationstates, may have timers to provide a timeout value to exit a state. Notethat detect, in some embodiments, refers to detecting an event on bothlegs of a lane; but not necessarily simultaneously. However, in otherembodiments, detect refers to detection of an event by an agent ofreference. Debounce, as one example, refers to sustained assertion of asignal. In one embodiment, HPI supports operation in the event ofnon-function lanes. Here, lanes may be dropped at specific states.

States defined in the state machine can include reset states,initialization states, and operational states, among other categoriesand subcategories. In one example, some initialization states can have asecondary timer which is used to exit the state on a timeout(essentially an abort due to failure to make progress in the state). Anabort may include updating of registers, such as status register. Somestates can also have primary timer(s) which are used to time the primaryfunctions in the state. Other states can be defined such that internalor external signals (such as handshake protocols) drive transition fromthe state to another state, among other examples.

A state machine may also support debug through single step, freeze oninitialization abort and use of testers. Here, state exits can bepostponed/held until the debug software is ready. In some instance, theexit can be postponed/held until the secondary timeout. Actions andexits, in one embodiment, can be based on exchange of trainingsequences. In one embodiment, the link state machine is to run in thelocal agent clock domain and transition from one state to the next is tocoincide with a transmitter training sequence boundary. Status registersmay be utilized to reflect the current state.

FIG. 7 illustrates a representation of at least a portion of a statemachine used by agents in one example implementation of HPI. It shouldbe appreciated that the states included in the state table of FIG. 7include a non-exhaustive listing of possible states. For instance, sometransitions are omitted to simplify the diagram. Also, some states maybe combined, split, or omitted, while others might be added. Such statescan include:

Event reset state: entered on a warm or cold reset event. Restoresdefault values. Initialize counters (e.g., sync counters). May exit toanother state, such as another reset state.

Timed reset state: timed state for in-band reset. May drive a predefinedelectrical ordered set (EOS) so remote receivers are capable ofdetecting the EOS and entering the timed reset as well. Receiver haslanes holding electrical settings. May exit to an agent to calibratereset state.

Calibrate reset state: calibration without signaling on the lane (e.g.receiver calibration state) or turning drivers off. May be apredetermined amount of time in the state based on a timer. May set anoperational speed. May act as a wait state when a port is not enabled.May include minimum residency time. Receiver conditioning or staggeringoff may occur based on design. May exit to a receiver detect state aftera timeout and/or completion of calibration.

Receiver detect state: detect presence of a receiver on lane(s). Maylook for receiver termination (e.g. receiver pulldown insertion). Mayexit to calibrate reset state upon a specified value being set or whenanother specified value is not set. May exit to transmitter calibratestate if a receiver is detected or a timeout is reached.

Transmitter calibrate state: for transmitter calibrations. May be atimed state allocated for transmitter calibrations. May includesignaling on a lane. May continuously drive an EOS, such as an EIEOS.May exit to compliance state when done calibrating or on expiration of atimer. May exit to transmitter detect state if a counter has expired ora secondary timeout has occurred.

Transmitter detect state: qualifies valid signaling. May be a handshakestate where an agent completes actions and exits to a next state basedon remote agent signaling. Receiver may qualify valid signaling fromtransmitter. Receiver, in one embodiment, looks for a wake detect, andif debounced on one or more lanes looks for it on the other lanes.Transmitter drives a detect signal. May exit to a polling state inresponse to debounce being completed for all lanes and/or a timeout orif debounce on all lanes is not complete and there is a timeout. Here,one or more monitor lanes may be kept awake to debounce a wake signal.And if debounced then the other lanes are potentially debounced. Thiscan enable power savings in low power states.

Polling state: receiver adapts, initializes drift buffer and locks onbits/bytes (e.g. identifies symbol boundaries). Lanes may be deskewed. Aremote agent may cause an exit to a next state (e.g. a Link Width State)in response to an acknowledge message. Polling can additionally includea training sequence lock by locking to an EOS and a training sequenceheader. Lane to lane skew at remote transmitter may be capped at a firstlength for top speed and a second length for slow speed. Deskew may beperformed in a slow mode as well as an operational mode. Receiver mayhave a specific maximum to deskew lane-to-lane skew, such as 8, 16, or32 intervals of skew. Receiver actions may include latency fixing.Receiver actions, in one embodiment, can be completed on successfuldeskew of a valid lane map. A successful handshake can be achieved, inone example, when a number of consecutive training sequence headers arereceived with acknowledgements and a number of training sequences withan acknowledge are transmitted after the receiver has completed itsactions.

Link width state: agent communicates with the final lane map to remotetransmitter. Receiver receives the information and decodes. Receiver mayrecord a configured lane map in a structure after checkpoint of aprevious lane map value in a second structure. Receiver may also respondwith an acknowledge (“ACK”). May initiate an in-band reset. As oneexample, first state to initiate in-band reset. In one embodiment, exitto a next state, such as flit configuration state, is performed inresponse to the ACK. Further, prior to entering low power state, a resetsignal may also be generated if the frequency of a wake detect signaloccurrence drops below a specified value (e.g. 1 every number of unitintervals (UIs), such as 4K UI). Receiver may hold current and previouslane maps. Transmitter may use different groups of lanes based ontraining sequences having different values. Lane map may not modify somestatus registers in some embodiments.

Flitlock configuration state: entered by a transmitter but the state isconsidered exited (i.e. secondary timeout moot) when both transmitterand receiver have exited to a blocking link state or other link state.Transmitter exit to a link state, in one embodiment, includes start of adata sequence (SDS) and training sequence (TS) boundary after receivinga planetary alignment signal. Here, receiver exit may be based onreceiving an SDS from a remote transmitter. This state may be a bridgefrom agent to link state. Receiver identifies SDS. Receiver may exit toblocking link state (BLS) (or a control window) if SDS received after adescrambler is initialized. If a timeout occurs, exit may be to resetstate. Transmitter drives lanes with a configuration signal. Transmitterexit may be to reset, BLS, or other states based on conditions ortimeouts.

Transmitting Link State: a link state. Flits are sent to a remote agent.May be entered from a blocking link state and return to a blocking linkstate on an event, such as a timeout. Transmitter transmits flits.Receiver receives flits. May also exit to a low power link state. Insome implementations, transmitting link state (TLS) can be referred toas the L0 state.

Blocking Link State: a link state. Transmitter and receiver areoperating in a unified manner. May be a timed state during which thelink layer flits are held off while the Physical layer information iscommunicated to the remote agent. May exit to a low power link state (orother link state based on the design). A blocking link state (BLS), inone embodiment, periodically occurs. The period is referred to as a BLSinterval and may be timed, as well as may differ between slow speed andoperational speed. Note that the link layer may be periodically blockedfrom sending flits so that a Physical layer control sequence of a lengthmay be sent, such as during a transmitting link state or a partial widthtransmitting link state. In some implementations, blocking link state(BLS) can be referred to as a L0 control, or L0c, state.

Partial Width Transmitting Link State: Link state. May save power byentering a partial width state. In one embodiment asymmetric partialwidth refers to each direction of a two direction link having differentwidths, which may be supported in some designs. In one example, apartial width transmitting link state is shown in the example of FIG. 9.Here, a partial width indication is sent while transmitting on a linkwith a first width to transition the link to transmit at a second, newwidth. A mismatch may result in a reset. Note that speeds may not bealtered but width may be. Therefore, flits are potentially sent atdifferent widths. May be similar to a transmitting link state logically;yet, since there is a smaller width, it may take longer to transmitflits. May exit to other link states, such as a low power link statebased on certain received and sent messages or an exit of the partialwidth transmitting link state or a link blocking state based on otherevents. In one embodiment, a transmitter port may turn idle lanes off ina staggered manner to provide better signal integrity (i.e. noisemitigation). Here, non-retry-able flits, Such as Null flits, may beutilized during periods where the link width is changing. Acorresponding receiver may drop these null flits and turn idle lanes offin a staggered manner, as well as record the current and previous lanemaps in one or more structures. Note status and associated statusregister may remain unaltered. In some implementations, partial widthtransmitting link state can be referred to as a partial L0, or L0p,state.

Exit Partial Width Transmitting Link State: exit the partial widthstate. May or may not use a blocking link state in some implementations.The transmitter initiates exit, in one embodiment, by sending partialwidth exit patterns on the idle lanes to train and deskew them. As oneexample, an exit pattern start with EIEOS, which is detected anddebounced to signal that the lane is ready to start the entry to a fulltransmitting link state, and may end with SDS or Fast Training Sequence(FTS) on idle lanes. Any failure during the exit sequence (receiveractions, such as deskew not completed prior to timeout) stops flittransfers to the link layer and asserts a reset, which is handled byresetting the link on the next blocking link state occurrence. The SDSmay also initialize the scrambler/descrambler on the lanes toappropriate values.

Low Power Link State: is a lower power state. In one embodiment, it islower power than the partial width link state, since signaling in thisembodiment is stopped on all lanes and in both directions. Transmittersmay use a blocking link state for requesting a low power link state.Here, receiver may decode the request and respond with an ACK or a NAK;otherwise reset may be triggered. In some implementations, low powerlink state can be referred to as a L1 state.

In some implementations, state transitions can be facilitated to allowstates to be bypassed, for instance, when state actions of the states,such as certain calibrations and configurations, have already beencompleted. Previous state results and configurations of a link can bestored and reused in subsequent initializations and configurations of alink. Rather than repeating such configurations and state actions,corresponding states can be bypassed. Traditional systems implementingstate bypasses, however, often implement complex designs and expensivevalidation escapes. Rather than using a traditional bypass, in oneexample, HPI can utilize short timers in certain states, such as wherethe state actions do not need to be repeated. This can potentially allowfor more uniform and synchronized state machine transitions among otherpotential advantages.

In one example, a software-based controller (e.g., through an externalcontrol point for the Physical layer) can enable a short timer for oneor more particular states. For instance, for a state for which actionshave already been performed and stored, the state can be short-timed tofacilitate a quick exit from the state to a next state. If, however, theprevious state action fails or cannot be applied within the short timerduration, a state exit can be performed. Further, the controller candisable the short timer, for instance, when the state actions should beperformed anew. A long, or default, timer can be set for each respectivestate. If configuration actions at the state cannot be completed withinthe long timer, a state exit can occur. The long timer can be set to areasonable duration so as to allow completion of the state actions. Theshort timer, in contrast, may be considerably shorter making it, in somecases, impossible to perform the state actions without reference back topreviously-performed state actions, among other examples.

In some instances, during initialization (or re-initialization) of alink, as agents progress through a state machine toward an operationallink state, one or more failures or state exits can occur that cause thestate to reset (e.g., to a reset or other state). In effect, theinitialization of the link can loop through one or more states withoutcompleting the initialization and entering a link state. In one example,a count can be maintained for the number of unproductive loops in statetransitions within the initialization of a link. For instance, each timean initialization returns to a reset state without reaching a link statea counter can be incremented. The counter can be reset for the link oncethe link successfully enters a link state. Such counters can bemaintained by agents on both sides of the link. Further, a threshold canbe set, for instance, by a software-based controller utilizing one ormore external control points. When the count of unproductive loops meets(or exceeds) the defined threshold initialization of the link can besuspended (e.g., set and held at or before the reset state). In someimplementations, in order to recommence initialization and release theinitialization from the suspended state, a software-based controller cantrigger a restart or re-initialization of the link. In some instances,the software-based tools can analyze the nature of the suspendedinitialize and perform diagnostics, set register values, and performother operations so as to guard against further looping of theinitialization. Indeed, in some implementations, a controller can set ahigher counter threshold or even override the counter, among otherexamples, in connection with restarting a suspended link initialization.

In some implementations of HPI, supersequences can be defined, eachsupersequence corresponding to a respective state or entry/exit to/fromthe respective state. A supersequence can include a repeating sequenceof data sets and symbols. The sequences can repeat, in some instances,until completion of a state or state transition, or communication of acorresponding event, among other examples. In some instances, therepeating sequence of a supersequence can repeat according to a definedfrequency, such as a defined number of unit intervals (UIs). A unitinterval (UI) can correspond to the interval of time for transmitting asingle bit on a lane of a link or system. In some implementations, therepeating sequence can begin with an electrically ordered set (EOS).Accordingly, an instance of the EOS can be expected to repeat inaccordance with the predefined frequency. Such ordered sets can beimplemented as defined 16 Byte codes that may be represented inhexadecimal format, among other examples. In one example, the EOS of asupersequence can be an electrically ordered electric idle ordered set(or EIEIOS). In one example, an EIEOS can resemble a low frequency clocksignal (e.g., a predefined number of repeating FF00 or FFF000hexadecimal symbols, etc.). A predefined set of data can follow the EOS,such as a predefined number of training sequences or other data. Suchsupersequences can be utilized in state transitions including link statetransitions as well as initialization, among other examples.

As introduced above, initialization, in one embodiment, can be doneinitially at slow speed followed by initialization at fast speed.Initialization at slow speed uses the default values for the registersand timers. Software then uses the slow speed link to setup theregisters, timers and electrical parameters and clears the calibrationsemaphores to pave the way for fast speed initialization. As oneexample, initialization can consist of such states or tasks as Reset,Detect, Polling, and Configuration, among potentially others.

In one example, a link layer blocking control sequence (i.e. a blockinglink state (BLS) or L0c state) can include a timed state during whichthe link layer flits are held off while the PHY information iscommunicated to the remote agent. Here, the transmitter and receiver maystart a block control sequence timer. And upon expiration of the timers,the transmitter and receiver can exit the blocking state and may takeother actions, such as exit to reset, exit to a different link state (orother state), including states that allow for the sending of flitsacross the link.

In one embodiment, link training can be provided and include the sendingof one or more of scrambled training sequences, ordered sets, andcontrol sequences, such as in connection with a defined supersequence. Atraining sequence symbol may include one or more of a header, reservedportions, a target latency, a pair number, a physical lane map codereference lanes or a group of lanes, and an initialization state. In oneembodiment, the header can be sent with a ACK or NAK, among otherexamples. As an example, training sequences may be sent as part ofsupersequences and may be scrambled.

In one embodiment, ordered sets and control sequences are not scrambledor staggered and are transmitted identically, simultaneously andcompletely on all lanes. A valid reception of an ordered set may includechecking of at least a portion of the ordered set (or entire ordered setfor partial ordered sets). Ordered sets may include an electricallyordered set (EOS), such as an Electrical Idle Ordered Set (EIOS) or anEIEOS. A supersequence may include a start of a data sequence (SDS) or aFast Training Sequence (FTS). Such sets and control supersequences canbe predefined and may have any pattern or hexadecimal representation, aswell as any length. For example, ordered sets and supersequences may bea length of 8 bytes, 16 bytes, or 32 bytes, etc. FTS, as an example, canadditionally be utilized for fast bit lock during exit of a partialwidth transmitting link state. Note that the FTS definition may be perlane and may utilize a rotated version of the FTS.

Supersequences, in one embodiment, can include the insertion of an EOS,such as an EIEOS, in a training sequence stream. When signaling starts,lanes, in one implementation, power-on in a staggered manner. This mayresult, however, in initial supersequences being seen truncated at thereceiver on some lanes. Supersequences can be repeated however overshort intervals (e.g., approximately one-thousand unit intervals (or ˜1KUI)). The training supersequences may additionally be used for one ormore of deskew, configuration and for communicating initializationtarget, lane map, etc. The EIEOS can be used for one or more oftransitioning a lane from inactive to active state, screening for goodlanes, identifying symbol and TS boundaries, among other examples.

Turning to FIG. 8, representations of example supersequences are shown.For instance, an exemplary Detect supersequence 805 can be defined. TheDetect supersequence 805 can include a repeating sequence of a singleEIEOS (or other EOS) followed by a predefined number of instances of aparticular training sequence (TS). In one example, the EIEOS can betransmitted, immediately followed by seven repeated instances of TS.When the last of the seven TSes is sent the EIEOS can be sent againfollowed by seven additional instances of TS, and so on. This sequencecan be repeated according to a particular predefined frequency. In theexample of FIG. 8, the EIEOS can reappear on the lanes approximatelyonce every one thousand UIs (˜1 KUI) followed by the remainder of theDetect supersequence 805. A receiver can monitor lanes for the presenceof a repeating Detect supersequence 805 and upon validating thesupersequence 705 can conclude that a remote agent is present, has beenadded (e.g., hot plugged) on the lanes, has awoke, or is reinitializing,etc.

In another example, another supersequence 810 can be defined to indicatea polling, configuration, or loopback condition or state. As with theexample Detect supersequence 805, lanes of a link can be monitored by areceiver for such a Poll/Config/Loop supersequence 810 to identify apolling state, configuration state, or loopback state or condition. Inone example, a Poll/Config/Loop supersequence 810 can begin with anEIEOS followed by a predefined number of repeated instances of a TS. Forinstance, in one example the EIEOS can be followed by thirty-one (31)instances of TS with the EIEOS repeating approximately every fourthousand UI (e.g., ˜4 KUI).

Further, in another example, a partial width transmitting state (PWTS)exit supersequence 815 can be defined. In one example, a PWTS exitsupersequence can include an initial EIEOS to repeat to pre-conditionlanes in advance of the sending of the first full sequence in thesupersequence. For instance, the sequence to be repeated insupersequence 815 can begin with an EIEOS (to repeat approximately onceevery 1 KUI). Further, fast training sequences (FTS) can be utilized inlieu of other training sequences (TS), the FTS configured to assist inquicker bit lock, byte lock, and deskewing. In some implementations, anFTS can be unscrambled to further assist in bringing idle lanes back toactive as quickly and non-disruptively as possible. As with othersupersequences preceding an entry into a link transmitting state, thesupersequence 815 can be interrupted and ended through the sending of astart of data sequence (SDS). Further, a partial FTS (FTSp) can be sentto assist in synchronizing the new lanes to the active lanes, such as byallowing bits to be subtracted (or added) to the FTSp, among otherexamples.

Supersequences, such as Detect supersequence 705 and Poll/Config/Loopsupersequence 710, etc. can potentially be sent substantially throughoutthe initialization or re-initialization of a link. A receiver, uponreceiving and detecting a particular supersequence can, in someinstances, respond by echoing the same supersequence to the transmitterover the lanes. The receiving and validation of a particularsupersequence by transmitter and receiver can serve as a handshake toacknowledge a state or condition communicated through the supersequence.For instance, such a handshake (e.g., utilizing a Detect supersequence705) can be used to identify reinitialization of a link. In anotherexample, such a handshake can be utilized to indicate the end of anelectrical reset or low power state, resulting in corresponding lanesbeing brought back up, among other examples. The end of the electricalreset can be identified, for instance, from a handshake betweentransmitter and receiver each transmitting a Detect supersequence 705.

In another example, lanes can be monitored for supersequences and usethe supersequences in connection with the screening of lanes for detect,wake, state exits and entries, among other events. The predefined andpredictable nature and form of supersequences can be further used toperform such initialization tasks as bit lock, byte lock, debouncing,descrambling, deskewing, adaptation, latency fixing, negotiated delays,and other potential uses. Indeed, lanes can be substantiallycontinuously monitored for such events to quicken the ability of thesystem to react to and process such conditions.

In one embodiment, the clock can be embedded in the data so there are noseparate clock lanes. The flits sent over the lanes can be scrambled tofacilitate clock recovery. The receiver clock recovery unit, as oneexample, can deliver sampling clocks to a receiver (i.e. the receiverrecovers clock from the data and uses it to sample the incoming data).Receivers in some implementations continuously adapt to an incoming bitstream. By embedding the clock, pinout can be potentially reduced.However, embedding the clock in the in-band data can alter the manner inwhich in-band reset is approached. In one embodiment, a blocking linkstate (BLS) can be utilized after initialization. Also, electricalordered set supersequences may be utilized during initialization tofacilitate the reset, among other considerations. The embedded clock canbe common between the devices on a link and the common operational clockcan be set during calibration and configuration of the link. Forinstance, HPI links can reference a common clock with drift buffers.Such implementation can realize lower latency than elastic buffers usedin non-common reference clocks, among other potential advantages.Further, the reference clock distribution segments may be matched towithin specified limits.

As noted above, an HPI link can be capable of operating at multiplespeeds including a “slow mode” for default power-up, initialization,etc. The operational (or “fast”) speed or mode of each device can bestatically set by BIOS. The common clock on the link can be configuredbased on the respective operational speeds of each device on either sideof the link. For instance, the link speed can be based on the slower ofthe two device operations speeds, among other examples. Any operationalspeed change may be accompanied by a warm or cold reset.

In some examples, on power-on, the link initializes to Slow Mode withtransfer rate of, for example, 100 MT/s. Software then sets up the twosides for operational speed of the link and begins the initialization.In other instances, a sideband mechanism can be utilized to set up alink including the common clock on the link, for instance, in theabsence or unavailability of a slow mode.

A slow mode initialization phase, in one embodiment, can use the sameencoding, scrambling, training sequences (TS), states, etc. asoperational speed but with potentially fewer features (e.g., noelectrical parameter setup, no adaptation, etc.). Slow mode operationphase can also potentially use the same encoding, scrambling etc.(although other implementations may not) but may have fewer states andfeatures compared to operational speed (e.g., no low power states).

Further, slow mode can be implemented using the native phase lock loop(PLL) clock frequency of the device. For instance, HPI can support anemulated slow mode without changing PLL clock frequency. While somedesigns may use separate PLLs for slow and fast speed, in someimplementations of HPI emulated slow mode can be achieved by allowingthe PLL clock to runs at the same fast operational speed during slowmode. For instance, a transmitter can emulate a slower clock signal byrepeating bits multiple times so as to emulate a slow high clock signaland then a slow low clock signal. The receiver can then oversample thereceived signal to locate edges emulated by the repeating bits andidentify the bit. In such implementations, ports sharing a PLL maycoexist at slow and fast speeds.

In some implementations of HPI, adaptation of lanes on a link can besupported. The Physical layer can support both receiver adaptation andtransmitter, or sender, adaptation. With receiver adaptation, thetransmitter on a lane can send sample data to the receiver which thereceiver logic can process to identify shortcomings in the electricalcharacteristics of the lane and quality of the signal. The receiver canthen make adjustments to the calibration of the lane to optimize thelane based on the analysis of the received sample data. In the case oftransmitter adaptation, the receiver can again receive sample data anddevelop metrics describing the quality of the lane but in this casecommunicate the metrics to the transmitter (e.g., using a backchannel,such as a software, hardware, embedded, sideband or other channel) toallow the transmitter to make adjustments to the lane based on thefeedback.

In one example implementation, supersequences can be scrambled. Forinstance, portions of a supersequence, such as TS payloads, can bescrambled by XORing those portions with a random or pseudo randomsequence. Other portions of the supersequence (e.g., the EIEOS, TSheader, FTS, etc.) can be left unscrambled. In one example, a pseudorandom binary sequence can be utilized with at least 23 bits (PRBS23).The PRBS can be generated according to a particular selected polynomial.In one example, the PRBS can be generated by a similar bit size,self-seeded storage element, such as a linear feedback shift register(LFSR). The LFSR can be a 23-bit Fibonacci LFSR capable of generating aPRBS sequence of over 8 Mb in length. The PRBS can repeat following theend of the sequence. In some implementations, the entirety of the PRBS23sequence can be used in the scrambling of training sequences included insupersequences used, for instance, in initialization of the link,including adaptation.

While the full length of a PRBS sequence can be used, in someimplementations, HPI can support allowing the use of varying lengths ofthe available PRBS sequence (e.g., the use of only a portion of thePRBS23 sequence). In some examples, a controller of a device can specifythat only a portion of the full length of a PRBS sequence be utilized.This can be desirable, for instance, in testing applications whererepeatability of bit sequences is desired, among potentially otherapplications. A software-based controller can specifying varying lengthsof the PRBS to be applied. For instance, BIOS of a device can specifythe PRBS length to be applied on the link. In some implementations, useof the full length of the PRBS sequence can be the default setting, forinstance, so as to maximize the benefits of the lengthy PRBS sequence.

Lane traffic in a transmitting link state (TLS) and training sequencescan be scrambled with a PRBS of a particular minimum length (e.g., 23bits). The starting seed applied to a stream can be varied between thelanes to enhance the electrical benefits of the PRBS on the link. In oneexample implementations, the PRBS can be generated by a 23 bit FibonacciLFSR implementing a 6-tap generator polynomial, such as,(x²³+x²¹+x¹⁶+x⁸+x⁵+x²+1).

In adaptation, a transmitter of an agent can transmit to a remotereceiver a random, or pseudo random pattern. In some instances,scrambled supersequences can be used as the pattern. Logic at thereceiver can determine characteristics of one or more lanes of the linkand generate metric data describing such characteristics. In the case ofreceiver adaptation, the receiver can attempt to determine optimalconfigurations for a lane based on the metrics and apply theseconfigurations at the receiver. In the case of transmitter adaptation,the receiver can communicate metrics to the transmitter for use by thetransmitter agent to configure and adapt the lane based on the metric.In either instance, in some implementations, hardware or software can beutilized to assess different transmitter settings in algorithmic orderto determine the optimal settings.

Receiver adaptation can be initiated at the start of the Polling stateusing the Polling supersequence sent from the remote transmitter.Similarly, transmitter adaptation can be done by repeating the followingfor each transmitter parameters. Both agents can enter Loopback Patternstate as masters and transmit specified pattern. Further, both receiverscan measure the metric (e.g. BER) for that particular transmittersetting at a remote agent. Both agents can go to Loopback Marker stateand then Reset and use backchannels (slow mode TLS or sideband) toexchange metrics. Based on these metrics, the next transmitter settingcan be identified. Eventually the optimal transmitter setting can beidentified and saved for subsequent use.

In some implementations, a timer can be used during adaptation. At theconclusion of a predefined timer value, adaptation can be ended, underthe assumption that the time value was sufficiently long to permit thetransmitter and receiver to have concluded adaptation tasks andsuccessfully adapt the lane. In other implementations, an alternateapproach can be utilized to improve the efficiency of adaptation of alink. For instance, in one example, a handshake can be employed totailor the time spent in adaptation to the time actually used tocomplete adaptation. In one example, a receiver at a first agentresponsible for generating metrics from a sample sent by thetransmitter, can send a signal notifying the transmitter that thereceiver approves the configuration of the link (or lane(s)) whetheradaptation was performed by the receiver or transmitter. Upon receivingthe signal, the transmitter can complete the handshake by sending anacknowledgement signal. In some instances, the acknowledgement canindicate similar approval of the link configuration at the transmitteragent, among other examples.

Metric information and other feedback can be communicated from areceiver agent to a transmitter agent in connection with adaptation of alink through a variety of mechanisms. The transmitter, in the case oftransmitter adaptation, can identify changes that can be made to one ormore attributes of the lane so as to improve the characteristics of thelane. The transmitter can make these changes and send additional sampledata on the lanes reflecting these changes. The receiver can thenprovide additional metric data or feedback, in some instances, to reportthe quality of the changes. In one example, a receiver can providemetric information through a backchannel. In one example, such abackchannel can be implemented as a software-based backchannel bysending the link (or one or more lanes) into slow mode allowing softwaretools to analyze the quality of a sample received from the transmitter.The software tool can cause metric information or a configurationrecommendation to be communicated to the transmitter agent. This can beaccomplished through an in-band communication, software-to-softwaremessage, or other means. In another example, a side band channel can beused (when available on the device(s)) as the backchannel. In stillanother example, a hardware-based channel can be used as thebackchannel, such as by reserving one lane between two agents fortransmission of the sample and reserving a second lane (at least duringan adaptation event) for transmission of the feedback metric data. Instill a further example, an embedded channel can be utilized thatleverages a control or BLS window for the sending of feedback metricdata. The control window can be set to slow mode (e.g., to enableanalysis by software), in some examples, while the control intervalcommunicates the sample at operation speed, among other potentialexamples.

In some instances, adaptation can include the sending of a PRBS (or aPRBS scrambled portion of a supersequence) by the transmitter to thereceiver in a Master-Master loopback state. Both agents on a lane canlock to the PRBS and use the sequence as an reference sequence foradaptation. One or both agents can receive the reference sequence anddetermine whether the reference sequence was reproduced properly at theagent's receiver. One or both agents can then respectively assess thequality of the lane based on a comparison of the received sequence withthe expected reference sequence. For instance, a bit error rate can bedetermined for the lane based on the comparison. Additionally, logic atthe transmitter (or at the receiver) can deliberately inject jitter,noise, or other characteristics to the signal prior to sending duringthe loopback to test the quality of the lane (e.g., whether the signalcan still be understood at the receiver despite the noise), among otherfeatures. The results of such assessments, including a determined biterror rate, can be included in metric data used to adapt the link.

Self tests can be performed through functionality provided in someimplementations of HPI (e.g., Interconnect Built-In Self Test (IBIST)).Supersequences can be utilized in such self tests. For instance, atransmitter or master can send a pattern including all or a portion of asupersequence, a PRBS sequence, or other sequence. The length andrepeatability of such sequences can be controlled in some instances,allowing the full length of a particular sequence to be applied in someinstances, while applying only a partial (and repeating) portion of thesequence in other instances. In some examples, a PRBS23 or sequencescrambled using PRBS23 can be utilized in self tests of a link.Additionally, start end points of a sequence can be particularlyselected and used in self tests and other functions. Further, multiplenon-correlated data sequences can be made available through someimplementations of HPI allowing different data sequences to be appliedon adjacent lanes. In one example, multiple non-correlated versions of aPRBS can be provided, such as four or more sequences, among otherexamples

As noted above, loopback can be used in a variety of tasks, includingtesting, adaptation, initialization, etc. Synchronization of two agentsin loopback can be difficult in some instances. For instance, an agentof a receiver may be originating data, such as particular trainingsequences, supersequences, etc. Further, upon entering loopback, thereceiver may splice data it has originated with the data it is toloopback, such as training sequences that it is to loopback. In oneexample, a transmitter or master in loopback can include logic totransition from a lock on TS originated by the receiver agent to lock onlooped-back TS. Such TS locking can present the threat of aliasing andother issues. In one example, a TS, such as the payload of a TS can beformatted to assist in remediating the risk of aliasing or otherwiseconfusing previous TSes with newly looped-back TSes. For instance, inone example, a TS can be provided with a suffix of zeroed data that caninclude bytes used for descrambling as well as other dual-use reservedbytes. Such zeroed bytes can be additionally used to reduce or eliminate(statistically) the risk that the newly looped-back TS will be missedamong data spliced by the receiver and originating from the receiver,among other examples. In loopback, a master can check the integrity ofits patterns and relock after loopback, for instance, through the use ofa NAK-ACK handshake with NAK TS with unchanged payload and handshake(ACK) used for in-band parameter payload. Further, master-masterloopback can also be supported, with TS format being used in TS lock ateach side of a master-master loopback.

In some implementations of HPI, design for test features can beprovided. In one embodiment, HPI includes hooks to enable post-designtest, debug, and validation. An exemplary, non-exhaustive list of suchfeatures is included below. Note that the following features areprovided by way of example, as some may be omitted, and others may beadded, etc.:

Single Step: Single step includes a debug feature where software maystep agents through the initialization states to a link state, such asTLS. A storage element, register, or signal (that is softwareaccessible) may enable this mode. In this mode the agent may set asemaphore on entering a state and perform the state actions. But when anexit condition is reached (including secondary timeouts), the sempahorecan cause a next state transition to not be taken. Here, the actualtransition may occur at the direction of a software-based controller,such as by clearing the semaphore. This potentially allows software toexamine the Physical layer during progress to a transmitting state orLoopback. Note that this may be extended to substates by setting asubstate sempahore on entry to a substate, among other examples. Theagent may remain in a current state as long as a semaphore, such as abit in a register, is set. Transition out of every state may be delayeduntil the hold bit is cleared by an outside agent. State rules definedexit criteria can otherwise be maintained except in cases involvingtime-outs, etc. The secondary timers may be disabled (e.g., ignored).Here, the clearing of the hold bit can be considered a replacementstimulus emulating the secondary timer time-out for single steppingoperation, among other examples. Further, single stepping with theassistance of software can be performed in a manner that supportsintegrity of the forward progress.

Freeze on Initialization Abort: This is a debug feature where the agentdoes not immediately take the transition to a reset state on aninitialization abort, delaying or suspending the transition so thatsoftware-based tools can identify causes for the abort. For instance,software-based tools can be used to probe reasons for an abort whilesupporting integrity of the regress and reinitialization. One or morefields of a register holding one or more bits, such as a controlregister, may control this action. This feature complements single stepby giving software control to state exits due to failure (as single stepdoes in case of normal progress). In one embodiment, by default, aPhysical layer state machine may retry by immediately transitioning to areset state after any initialization abort. However, the state machinemay be frozen (that is, remain in the same state) at the point offailure, not transition to a reset state by setting initialization abortfreeze bit in a register. As an example, when in freeze oninitialization abort mode, when an initialization abort occurs, thestate machine freezes by setting state machine hold bit, such as thesemaphore described above, in a register. Software, in one embodiment,can access registers to read the stopped state and other frozenresources and use the frozen state to debug the state machine. Clearingthe hold bit in this frozen state may result in the state machineexiting to Reset. In-band reset, in one embodiment, does not release thehold.

Automated Test Equipment (ATE): Automated Test Equipment (ATE) may beused to characterize (e.g., margin) the link in the various statesincluding TLS. In this case the ATE can act as an agent and use apredetermined set of transmit patterns to get the device under test(DUT) into TLS. In ATE mode, an ATE mode field to hold one or more bitsin a register can be set. The DUT does the same state actions but whenan exit condition is reached, the next state transition is not taken andthe actual transition occurs when the secondary timeout occurs. Thus,this mode is similar to single step except that transitions occur onpre-programmed timeouts instead of software intervention. For instance,ATE mode can manage a programmable timer based progression thru thestates. Longer timers set during the mode can allow handshakes in statesto complete while still exiting at time specified by software managingor otherwise used in the ATE mode.

In some instances, high volume manufacturing (HVM) tests may beperformed by connecting the transmitter of a DUT port to its ownreceiver and getting this link pair to TLS where signature patterns foreach initialization mode (except loopback or compliance slave) are sentand checked to pass or fail the DUT. This can be accomplished without aspecial mode, but latency fixing may be performed for checking signatureat the correct cycle.

IBIST (Interconnect Built in self test): IBIST uses compliance andloopback states to test the interconnect with built in patterngenerators and checkers.

Compliance: An agent may be made a Compliance master or slave forvalidation purposes. The agent enters Compliance from the transmittercalibrate state (TCS). The slave loops back incoming data from themaster after re-timing it to its local clock (without undo of anypolarity inversion or lane reversal). The master sends a compliancepattern and receives it looped back from the slave. The master may besent to Loopback Pattern to try out more specialized patterns. Themaster may also be used without a slave so that its transmitter can becharacterized. Typical use of Compliance is to characterize operation ofthe analog front end on some subset of lanes when loopback is notfunctional. Compliance state may be utilized for jitter or noiseinvestigation, debug, exploring a link, etc. The Compliance state candrive a supersequence with a transmitter from the master. Receiver looksfor a wake on a monitor lane, debounces the wake, drops bad lanes,adapts, and bit locks, etc. The slave transmitter can drive thecompliance pattern until its receiver actions are complete. Thenloop-back is re-timed and non-deskewed. Slave receiver does similarmonitor and debounce, etc. actions. Exit may be to a reset state, suchas a timed reset, or to a loopback pattern state to start the test,among other examples.

Loopback: An agent may be made into a Loopback master for detailedvalidation of a subset of lanes. After successful polling, the masterenters Loopback with a subset of lanes and the other agent also entersLoopback but as the slave. Loopback Master may communicate its intent toenter loopback using a loopback master bit in a polling trainingsequence (TS). An agent which is not loopback master and receives thisbit in TS polling may become a loopback slave. At the end of Polling,both connected ports enter a Loopback Marker state (LMS). From there,the master takes the slave to a Loopback Pattern State, where it sendspatterns and checks them after they are looped back by the slave. Theloopback slave loops back deskewed data (unlike compliance slave). Thestate machine may stay in Loopback indefinitely performing one testafter the other. This enables cascading tests without losing bit lock.Tx adaptation may also use the loopback pattern generation and checkingcapabilities. During TX adaptation, both agents act as masters, but TXsends pattern and Rx checks for bit errors in one scenario.

Pattern Generation: Pattern generators may be activated in Complianceand Loopback states. In one embodiment, a pattern generator, such as theexample pattern generator illustrated in the simplified block diagram ofFIG. 10, can includes one or more pattern buffers, each having aspecified size (e.g. 128 bits) and a plurality of 23-bit (or otherlength) LFSR seed buffers accessed through a structure, such as aregister. The words of pattern generators may be indirectly addressedthrough pattern buffer selection.

In one example implementation, the content of a pattern buffer is sentin each of the enabled lanes serially starting with least significantbit first. Each lane may select any buffer utilizing a registermechanism. All the lanes selecting the same pattern buffer transmit thesame data in a UI. Each pattern buffer may also be independentlyscrambled by a 23 bit pseudo random generator, which is enabled usingbits in a register, such as a pattern control register. The transmissionin any lane may be inverted individually using a Pattern InvertSelection Register, for instance. An auto inversion feature may beenabled to generate cross talk pattern using auto inversion enable bitof a Pattern Generator Control Register, among other examples. Fortransmitter adaptation using loopback, the staggered PRBS23 pattern canbe selected. This pattern may also be used to scramble the flits in lowpower state. The number of patterns sent may be more than the loop countin pattern generator control register, as a loop count refers to thetotal number of 128 bit patterns received. The master may send anintegral number of 128 UI patterns. The pattern generator content can betransmitted continuously until at least one of three exit conditionsoccurs: (i) if the loop count status is equal to the Exponential Loopcount; (ii) Stop On Error is set in the register and an error on anyLane has occurred; or (iii) Stop Test is set in the register. Bydefault, transmitter lanes that have not been detected as indicated bylane dropped in a Transmitter Data Lane Dropped Status Register anddropped receiver lanes as indicated by receiver lane dropped in theReceiver Data Lane Dropped Status Register do not transmit or compareany patterns. If the Include Dropped Lanes bit is set in the PatternGenerator Control Register, dropped lanes also drive and check patternsin Loopback Pattern State. Disabled lanes may not participate intesting. Further, slave transmitter lane content can be controlled viathe Slave Loopback Path Select Register to either loopback the contentfrom the Rx lane or to select the pattern generator. In some instances,there may be no alignment requirement between the looped back data andthe slave generated pattern, among other features, structures, andexamples.

Pattern Check and Error Counting: Pattern checking can be enabled in aLoopback Pattern. Each receiver lane can compare the received dataagainst transmitted data in a corresponding transmitter lane. The slaveside checking can be achieved by programming the same exact patterngeneration values in both the Loopback Master and Slave. Start ofchecking and pattern buffer scrambling can be marked by the end of SDS.Each lane can choose to compare or not depending on a register value.The number of patterns checked can be controlled by a loop count. Everycount indicates 128 bits of pattern buffer data. The loop counter canhave 5 bits of exponent count to enable testing for long time. Loopcount value of zero corresponds to infinite count, in which case, a testcan only be terminated by setting the Stop Test bit, in someimplementations. In order to accommodate electrical parameterapplication that is synchronized upon entry to Loopback Pattern, thechecking can be masked for a time specified by time value in the PatternChecker Control Register. Checking can be made selective on any one bitin an interval using selective error check start and selective errorcheck interval in the Pattern Checker Control Register.

During transmitter adaptation in loopback, both agents can act asmasters but transmitter sends the pattern and the receiver checks forbit errors. Another difference is that Start Test can be set prior toentering loopback and a structure can be used to delay the actual startof test in Loopback marker (sending SDS). In Loopback Pattern when loopcount expires, ending the transmitter adaptation test, the agent canreturn to the Loopback marker, wait for timeout and then exit to Resetfor backchannel operation. When a series of transmitter parameters arebeing tried, the agent may go back to Loopback Pattern instead of Resettill the last parameter has been tried, among other examples.

Error counting can be performed collectively by per lane and globalcounters. Error counters can be accessible through the Lane ErrorCounter Register. The lane being observed and selected toward globalcounter can be indicated by the Receiver Error Counter Lane Select fieldin the Pattern Checker Control Register. The least significant 8 bits ofthe error counter can be available for every lane. The most significant23 bits of the Lane Error Counter Register can only be available for theselected lane indicated by Receiver Error Counter Lane Select at thetime when the state machine enters Loopback Pattern. The Lane ErrorCounter Register does not stick at the maximum value but instead rollsover to all 0's which is indicated by setting the overflow flag (e.g.,bit 31 of Lane Error Counter Register) on a per lane basis. Per lanecounters in non-selected lanes freeze on maximum error count can mark anoverflow. Initial masking, selective error checking, and Loopcount Stallcan also apply to error counters. Software may manually clear the LaneError Counter Register by writing all 1's to bits 31:0, among otherexamples.

Lane Reversal: If lane reversal or polarity inversion is detected at areceiver in Polling, pattern checking (and loopback, if slave) may bedone after undoing the reversal and polarity inversion of lanes.

Agent Loopback Marker State: Loopback marker is an agent state butunlike other agent states master and slave actions and exits may bedifferent. Loopback slave may undo any polarity inversion and/or lanereversal but may not descramble or rescramble looped back bits.Acknowledgment exchange may not apply to slave since it is looping back.Since slave may deskew before looping back on symbol boundary, mastermay not be forced to re-bytelock or re-deskew but the master may re-locktraining sequence to avoid locking to some alias. Means to do this mayinclude re-seeding of LFSR, comparing TS and/or EIEOS or somecombination of these. The end of the SDS marks the end of loopback setupand the start of pattern generation, checking and counting.

Agent Loopback Pattern State (or Block Link state): In this state,instead of control patterns, a master transmitter can send a MISTpattern and its receiver can check for errors in received pattern. Fortransmitter adaptation both agents can be masters. For a predeterminedperiod, the transmitter can sends a pattern and a remote receiver cancompare this pattern and determine a figure of merit or metric for thereceived pattern which is recorded in a storage element, such as aregister. The comparison method and metric may be design dependent(e.g., BER with jitter injection). At the end of the period, both agentscan exit to Reset for the backchannel to examine the metric and set upthe next iteration of transmitter adaptation.

Lane Enable/Disable: Lanes can be disabled at the transmitter, receiver,or both to cause the link to operate at lower width. It maybe theresponsibility of a software-based controller or tool to disable correctlanes if they are reversed.

As noted above, both timers and controls (e.g., control signals,handshakes, etc.) can be used to facilitate transitions within a statemachine defined on agents within an HPI environment. For instance,timers can be used in some state transitions while signaling can be usedin other state transitions. Further, mechanisms can be provided forfacilitating state transitions. For instance, as introduced above, anATE mode or other testing mode can be provided in some implementationsthat can override some state transition mechanisms, for instance, toassist in management and observation of a test of the system. Forexample, in one example testing mode, all state transitions can be set,by a test or test administrator, according to a respective timer. Logiccan also be provided to assist in configuring states that wouldordinarily transition on a control signal to transition based on adefined timer, among other examples. Such other examples can include,for instance, software-controller state transitions such as singlestepping (e.g., through freeze on initialization abort), and otherexamples.

As introduced above, a BLS or L0c window can be utilized to communicatevarious control codes, signals, and other data, including within test,initialization, and error checking applications. A predefined set of BLScodes can be defined that can be communicated within the brief window ofUIs provided through BLS. However, transients, transmission lineirregularities, and other factors can result in bit errors that canpotentially cause the control codes to be corrupted or misinterpreted.Logic can be provided on agents on a link to perform some degree oferror detection and correction to account for more minor errors ininterpreting and processing control codes. If the logic is still unableto make sense of definitively resolve a control code error, a mismatchcan result. In some implementations of HPI, features can be provided torespond to the potential catastrophic side effects of a mismatch. Forinstance, in one embodiment, upon detection of a mismatch, a link can besuspended, including the sending of potentially corrupted flits,adaptation, and other communications. The link can then be automaticallytransitioned into a reset mode at the end of the next BLS (or L0c)interval, among other examples.

As both devices on a link can run off the same reference clock (e.g.,ref clk), elasticity buffers can be omitted (any elastic buffers may bebypassed or used as drift buffers with lowest possible latency).However, phase adjustment or drift buffers can be utilized on each laneto transfer the respective receiver bitstream from the remote clockdomain to the local clock domain. The latency of the drift buffers maybe sufficient to handle sum of drift from all sources in electricalspecification (e.g., voltage, temperature, the residual SSC introducedby reference clock routing mismatches, and so on) but as small aspossible to reduce transport delay. If the drift buffer is too shallow,drift errors can result and manifest as series of CRC errors.Consequently, in some implementations, a drift alarm can be providedwhich can initiate a Physical layer reset before an actual drift erroroccurs, among other examples.

Some implementations of HPI may support the two sides running at a samenominal reference clock frequency but with a ppm difference. In thiscase frequency adjustment (or elasticity) buffers may be needed and canbe readjusted during an extended BLS window or during special sequenceswhich would occur periodically, among other examples.

The operation of the HPI PHY logical layer can be independent of theunderlying transmission media provided the latency does not result inlatency fixing errors or timeouts at the link layer, among otherconsiderations.

External interfaces can be provided in HPI to assist in management ofthe Physical layer. For instance, external signals (from pins, fuses,other layers), timers, control and status registers can be provided. Theinput signals may change at any time relative to PHY state but are to beobserved by the Physical layer at specific points in a respective state.For example, a changing alignment signal (as introduced below) may bereceived but have no effect after the link has entered a transmittinglink state, among other examples. Similarly command register values canbe observed by Physical layer entities only at specific points in time.For instance, Physical layer logic can take a snapshot of the value anduse it in subsequent operations. Consequently, in some implementations,updates to command registers may be associated with a limited subset ofspecific periods (e.g., in a transmitting link state or when holding inReset calibration, in slow mode transmitting link state) to avoidanomalous behavior.

Since status values track hardware changes, the values read may dependon when they are read. Some status values, however, such as link map,latency, speed, etc., may not change after initialization. For instance,a re-initialization (or low power link state (LPLS), or L1 state, exit)is the only thing which may cause these to change (e.g., a hard lanefailure in a TLS may not result in reconfiguration of link untilre-initialization is triggered, among other examples).

Interface signals can include signals that are external to but affectPhysical layer behavior. Such interface signals can include, asexamples, encoding and timing signals. Interface signals can be designspecific. These signals can be an input or output. Some interfacesignals, such as termed semaphores and prefixed EO among other examples,can be active once per assertion edge, i.e., they may be deasserted andthen reasserted to take effect again, among other examples. Forinstance, Table 1 includes an example listing of example functions:

TABLE 1 Function input pin reset (aka warm reset) input pin reset (akacold reset) input in-band reset pulse; causes semaphore to be set;semaphore is cleared when in-band reset occurs input enables low powerstates input loopback parameters; applied for loopback pattern input toenter PWLTS input to exit PWLTS input to enter LPLS input to exit LPLSinput from idle exit detect (aka squelch break) input enables use ofCPhyInitBegin input from local or planetary alignment for transmitter toexit initialization output when remote agent NAKs LPLS request outputwhen agent enters LPLS output to link layer to force non-retryable flitsoutput to link layer to force NULL flits output when transmitter is inpartial width link transmitting state (PWLTS) output when receiver is inPWLTS

CSR timer default values can be provided in pairs—one for slow mode andone for operational speed. In some instances, the value 0 disables thetimer (i.e., timeout never occurs). Timers can include those shown inTable 2, below. Primary timers can be used to time expected actions in astate. Secondary timers are used for aborting initializations which arenot progressing or for making forward state transitions at precise timesin an automated test equipment (or ATE) mode. In some cases, secondarytimers can be much larger than the primary timers in a state.Exponential timer sets can be suffixed with exp and the timer value is 2raised to the field value. For linear timers, the timer value is thefield value. Either timer could use different granularities.Additionally, some timers in the power management section can be in aset called a timing profile. These can be associated with a timingdiagram of the same name.

Timers Table Tpriexp Set Reset residency for driving EIEOS Receivercalibration minimum time; for stagger transmitter off Transmittercalibration minimum time; for stagger on Tsecexp Set Timed receivercalibration Timed transmitter calibration Squelch exit detect/debounceDetectAtRx overhang for handshake Adapt + bitlock/bytelock/deskewConfigure link widths Wait for planetary aligned clean flit boundaryRe-bytelock/deskew Tdebugexp Set For hot plug; non-0 value to debughangs TBLSentry Set BLS entry delay - fine BLS entry delay - coarse TBLSSet BLS duration for transmitter BLS duration for receiver BLS cleanflit interval for transmitter TBLS clean flit interval for receiver

Command and control registers can be provided. Control registers can belate action and may be read or written by software in some instances.Late-action values can take effect (e.g., pass through fromsoftware-facing to hardware-facing stage) continuously in Reset. Controlsemaphores (prefixed CP) are RW1S and can be cleared by hardware.Control registers may be utilized to perform any of the items describedherein. They may be modifiable and accessible by hardware, software,firmware, or a combination thereof.

Status registers can be provided to track hardware changes (written andused by hardware) and can be read-only (but debug software may also beable to write to them). Such registers may not affect interoperabilityand can be typically complemented with many private status registers.Status semaphores (prefixed SP) can be mandated since they may becleared by software to redo the actions which set the status. Defaultmeans initial (on reset) values can be provided as a subset of thesestatus bits related to initialization. On an initialization abort, thisregister can be copied into a storage structure.

Tool Box registers can be provided. For instance, testability tool-boxregisters in the Physical layer can provide pattern generation, patternchecking and loop back control mechanisms. Higher-level applications canmake use of these registers along with electrical parameters todetermine margins. For example, Interconnect built in test may utilizethis tool-box to determine margins. For transmitter adaptation, theseregisters can be used in conjunction with the specific registersdescribed in previous sections, among other examples.

In some implementations, HPI supports Reliability, Availability, andServiceability (RAS) capabilities utilizing the Physical layer. In oneembodiment, HPI supports hot plug and remove with one or more layers,which may include software. Hot remove can include quiescing the linkand an initialization begin state/signal can be cleared for the agent tobe removed. A remote agent (i.e. the one that is not being removed(e.g., the host agent)) can be set to slow speed and its initializationsignal can also be cleared. An in-band reset (e.g., through BLS) cancause both agents to wait in a reset state, such as a Calibrate ResetState (CRS); and the agent to be removed can be removed (or can be heldin targeted pin reset, powered down), among other examples and features.Indeed, some of the above events may be omitted and additional eventscan be added.

Hot add can include initialization speed can default to slow and aninitialization signal can be set on the agent to be added. Software canset speed to slow and may clear the initialization signal on the remoteagent. The link can come up in slow mode and software can determine anoperational speed. In some cases, no PLL relock of a remote is performedat this point. Operational speed can be set on both agents and an enablecan be set for adaptation (if not done previously). The initializationbegin indicator can be cleared on both agents and an in-band BLS resetcan cause both agents to wait in CRS. Software can assert a warm reset(e.g., a targeted or self-reset) of an agent (to be added), which maycause a PLL to relock. Software may also set the initialization beginsignal by any known logic and further set on remote (thus advancing itto Receiver Detect State (RDS)). Software can de-assert warm reset ofthe adding agent (thus advancing it to RDS). The link can theninitialize at operational speed to a Transmitting Link State (TLS) (orto Loopback if the adaption signal is set), among other examples.Indeed, some of the above events may be omitted and additional eventscan be added.

Data lane failure recovery can be supported. A link in HPI, in oneembodiment, can be resilient against hard error on a single lane byconfiguring itself to less than full width (e.g. less than half the fullwidth) which can thereby exclude the faulty lane. As an example, theconfiguration can be done by link state machine and unused lanes can beturned off in the configuration state. As a result, the flit may be sentacross at a narrower width, among other examples.

In some implementations of HPI, lane reversal can be supported on somelinks. Lane reversal can refer, for instance, to lanes 0/1/2 . . . of atransmitter connected to lanes n/n−1/n−2 . . . of a receiver (e.g. n mayequal 19 or 7, etc.). Lane reversal can be detected at the receiver asidentified in a field of a TS header. The receiver can handle the lanereversal by starting in a Polling state by using physical lane n . . . 0for logical lane 0 . . . n. Hence, references to a lane may refer to alogical lane number. Therefore, board designers may more efficiently laydown the physical or electrical design and HPI may work with virtuallane assignments, as described herein. Moreover, in one embodiment,polarity may be inverted (i.e. when a differential transmitter +/− isconnected to receiver −/+. Polarity can also be detected at a receiverfrom one or more TS header fields and handled, in one embodiment, in thePolling State.

Referring to FIG. 11, an embodiment of a block diagram for a computingsystem including a multicore processor is depicted. Processor 1100includes any processor or processing device, such as a microprocessor,an embedded processor, a digital signal processor (DSP), a networkprocessor, a handheld processor, an application processor, aco-processor, a system on a chip (SOC), or other device to execute code.Processor 1100, in one embodiment, includes at least two cores—core 1101and 1102, which may include asymmetric cores or symmetric cores (theillustrated embodiment). However, processor 1100 may include any numberof processing elements that may be symmetric or asymmetric.

In one embodiment, a processing element refers to hardware or logic tosupport a software thread. Examples of hardware processing elementsinclude: a thread unit, a thread slot, a thread, a process unit, acontext, a context unit, a logical processor, a hardware thread, a core,and/or any other element, which is capable of holding a state for aprocessor, such as an execution state or architectural state. In otherwords, a processing element, in one embodiment, refers to any hardwarecapable of being independently associated with code, such as a softwarethread, operating system, application, or other code. A physicalprocessor (or processor socket) typically refers to an integratedcircuit, which potentially includes any number of other processingelements, such as cores or hardware threads.

A core often refers to logic located on an integrated circuit capable ofmaintaining an independent architectural state, wherein eachindependently maintained architectural state is associated with at leastsome dedicated execution resources. In contrast to cores, a hardwarethread typically refers to any logic located on an integrated circuitcapable of maintaining an independent architectural state, wherein theindependently maintained architectural states share access to executionresources. As can be seen, when certain resources are shared and othersare dedicated to an architectural state, the line between thenomenclature of a hardware thread and core overlaps. Yet often, a coreand a hardware thread are viewed by an operating system as individuallogical processors, where the operating system is able to individuallyschedule operations on each logical processor.

Physical processor 1100, as illustrated in FIG. 11, includes twocores—core 1101 and 1102. Here, core 1101 and 1102 are consideredsymmetric cores, i.e. cores with the same configurations, functionalunits, and/or logic. In another embodiment, core 1101 includes anout-of-order processor core, while core 1102 includes an in-orderprocessor core. However, cores 1101 and 1102 may be individuallyselected from any type of core, such as a native core, a softwaremanaged core, a core adapted to execute a native Instruction SetArchitecture (ISA), a core adapted to execute a translated InstructionSet Architecture (ISA), a co-designed core, or other known core. In aheterogeneous core environment (i.e. asymmetric cores), some form oftranslation, such a binary translation, may be utilized to schedule orexecute code on one or both cores. Yet to further the discussion, thefunctional units illustrated in core 1101 are described in furtherdetail below, as the units in core 1102 operate in a similar manner inthe depicted embodiment.

As depicted, core 1101 includes two hardware threads 1101 a and 1101 b,which may also be referred to as hardware thread slots 1101 a and 1101b. Therefore, software entities, such as an operating system, in oneembodiment potentially view processor 1100 as four separate processors,i.e., four logical processors or processing elements capable ofexecuting four software threads concurrently. As alluded to above, afirst thread is associated with architecture state registers 1101 a, asecond thread is associated with architecture state registers 1101 b, athird thread may be associated with architecture state registers 1102 a,and a fourth thread may be associated with architecture state registers1102 b. Here, each of the architecture state registers (1101 a, 1101 b,1102 a, and 1102 b) may be referred to as processing elements, threadslots, or thread units, as described above. As illustrated, architecturestate registers 1101 a are replicated in architecture state registers1101 b, so individual architecture states/contexts are capable of beingstored for logical processor 1101 a and logical processor 1101 b. Incore 1101, other smaller resources, such as instruction pointers andrenaming logic in allocator and renamer block 1130 may also bereplicated for threads 1101 a and 1101 b. Some resources, such asre-order buffers in reorder/retirement unit 1135, ILTB 1120, load/storebuffers, and queues may be shared through partitioning. Other resources,such as general purpose internal registers, page-table base register(s),low-level data-cache and data-TLB 1115, execution unit(s) 1140, andportions of out-of-order unit 1135 are potentially fully shared.

Processor 1100 often includes other resources, which may be fullyshared, shared through partitioning, or dedicated by/to processingelements. In FIG. 11, an embodiment of a purely exemplary processor withillustrative logical units/resources of a processor is illustrated. Notethat a processor may include, or omit, any of these functional units, aswell as include any other known functional units, logic, or firmware notdepicted. As illustrated, core 1101 includes a simplified,representative out-of-order (OOO) processor core. But an in-orderprocessor may be utilized in different embodiments. The OOO coreincludes a branch target buffer 1120 to predict branches to beexecuted/taken and an instruction-translation buffer (I-TLB) 1120 tostore address translation entries for instructions.

Core 1101 further includes decode module 1125 coupled to fetch unit 1120to decode fetched elements. Fetch logic, in one embodiment, includesindividual sequencers associated with thread slots 1101 a, 1101 b,respectively. Usually core 1101 is associated with a first ISA, whichdefines/specifies instructions executable on processor 1100. Oftenmachine code instructions that are part of the first ISA include aportion of the instruction (referred to as an opcode), whichreferences/specifies an instruction or operation to be performed. Decodelogic 1125 includes circuitry that recognizes these instructions fromtheir opcodes and passes the decoded instructions on in the pipeline forprocessing as defined by the first ISA. For example, as discussed inmore detail below decoders 1125, in one embodiment, include logicdesigned or adapted to recognize specific instructions, such astransactional instruction. As a result of the recognition by decoders1125, the architecture or core 1101 takes specific, predefined actionsto perform tasks associated with the appropriate instruction. It isimportant to note that any of the tasks, blocks, operations, and methodsdescribed herein may be performed in response to a single or multipleinstructions; some of which may be new or old instructions. Notedecoders 1126, in one embodiment, recognize the same ISA (or a subsetthereof). Alternatively, in a heterogeneous core environment, decoders1126 recognize a second ISA (either a subset of the first ISA or adistinct ISA).

In one example, allocator and renamer block 1130 includes an allocatorto reserve resources, such as register files to store instructionprocessing results. However, threads 1101 a and 1101 b are potentiallycapable of out-of-order execution, where allocator and renamer block1130 also reserves other resources, such as reorder buffers to trackinstruction results. Unit 1130 may also include a register renamer torename program/instruction reference registers to other registersinternal to processor 1100. Reorder/retirement unit 1135 includescomponents, such as the reorder buffers mentioned above, load buffers,and store buffers, to support out-of-order execution and later in-orderretirement of instructions executed out-of-order.

Scheduler and execution unit(s) block 1140, in one embodiment, includesa scheduler unit to schedule instructions/operation on execution units.For example, a floating point instruction is scheduled on a port of anexecution unit that has an available floating point execution unit.Register files associated with the execution units are also included tostore information instruction processing results. Exemplary executionunits include a floating point execution unit, an integer executionunit, a jump execution unit, a load execution unit, a store executionunit, and other known execution units.

Lower level data cache and data translation buffer (D-TLB) 1150 arecoupled to execution unit(s) 1140. The data cache is to store recentlyused/operated on elements, such as data operands, which are potentiallyheld in memory coherency states. The D-TLB is to store recentvirtual/linear to physical address translations. As a specific example,a processor may include a page table structure to break physical memoryinto a plurality of virtual pages.

Here, cores 1101 and 1102 share access to higher-level or further-outcache, such as a second level cache associated with on-chip interface1110. Note that higher-level or further-out refers to cache levelsincreasing or getting further way from the execution unit(s). In oneembodiment, higher-level cache is a last-level data cache—last cache inthe memory hierarchy on processor 1100—such as a second or third leveldata cache. However, higher level cache is not so limited, as it may beassociated with or include an instruction cache. A trace cache—a type ofinstruction cache—instead may be coupled after decoder 1125 to storerecently decoded traces. Here, an instruction potentially refers to amacro-instruction (i.e. a general instruction recognized by thedecoders), which may decode into a number of micro-instructions(micro-operations).

In the depicted configuration, processor 1100 also includes on-chipinterface module 1110. Historically, a memory controller, which isdescribed in more detail below, has been included in a computing systemexternal to processor 1100. In this scenario, on-chip interface 111 isto communicate with devices external to processor 1100, such as systemmemory 1175, a chipset (often including a memory controller hub toconnect to memory 1175 and an I/O controller hub to connect peripheraldevices), a memory controller hub, a northbridge, or other integratedcircuit. And in this scenario, bus 1105 may include any knowninterconnect, such as multi-drop bus, a point-to-point interconnect, aserial interconnect, a parallel bus, a coherent (e.g. cache coherent)bus, a layered protocol architecture, a differential bus, and a GTL bus.

Memory 1175 may be dedicated to processor 1100 or shared with otherdevices in a system. Common examples of types of memory 1175 includeDRAM, SRAM, non-volatile memory (NV memory), and other known storagedevices. Note that device 1180 may include a graphic accelerator,processor or card coupled to a memory controller hub, data storagecoupled to an I/O controller hub, a wireless transceiver, a flashdevice, an audio controller, a network controller, or other knowndevice.

Recently however, as more logic and devices are being integrated on asingle die, such as SOC, each of these devices may be incorporated onprocessor 1100. For example in one embodiment, a memory controller hubis on the same package and/or die with processor 1100. Here, a portionof the core (an on-core portion) 1110 includes one or more controller(s)for interfacing with other devices such as memory 1175 or a graphicsdevice 1180. The configuration including an interconnect and controllersfor interfacing with such devices is often referred to as an on-core (orun-core configuration). As an example, on-chip interface 1110 includes aring interconnect for on-chip communication and a high-speed serialpoint-to-point link 1105 for off-chip communication. Yet, in the SOCenvironment, even more devices, such as the network interface,co-processors, memory 1175, graphics processor 1180, and any other knowncomputer devices/interface may be integrated on a single die orintegrated circuit to provide small form factor with high functionalityand low power consumption.

In one embodiment, processor 1100 is capable of executing a compiler,optimization, and/or translator code 1177 to compile, translate, and/oroptimize application code 1176 to support the apparatus and methodsdescribed herein or to interface therewith. A compiler often includes aprogram or set of programs to translate source text/code into targettext/code. Usually, compilation of program/application code with acompiler is done in multiple phases and passes to transform hi-levelprogramming language code into low-level machine or assembly languagecode. Yet, single pass compilers may still be utilized for simplecompilation. A compiler may utilize any known compilation techniques andperform any known compiler operations, such as lexical analysis,preprocessing, parsing, semantic analysis, code generation, codetransformation, and code optimization.

Larger compilers often include multiple phases, but most often thesephases are included within two general phases: (1) a front-end, i.e.generally where syntactic processing, semantic processing, and sometransformation/optimization may take place, and (2) a back-end, i.e.generally where analysis, transformations, optimizations, and codegeneration takes place. Some compilers refer to a middle, whichillustrates the blurring of delineation between a front-end and back endof a compiler. As a result, reference to insertion, association,generation, or other operation of a compiler may take place in any ofthe aforementioned phases or passes, as well as any other known phasesor passes of a compiler. As an illustrative example, a compilerpotentially inserts operations, calls, functions, etc. in one or morephases of compilation, such as insertion of calls/operations in afront-end phase of compilation and then transformation of thecalls/operations into lower-level code during a transformation phase.Note that during dynamic compilation, compiler code or dynamicoptimization code may insert such operations/calls, as well as optimizethe code for execution during runtime. As a specific illustrativeexample, binary code (already compiled code) may be dynamicallyoptimized during runtime. Here, the program code may include the dynamicoptimization code, the binary code, or a combination thereof.

Similar to a compiler, a translator, such as a binary translator,translates code either statically or dynamically to optimize and/ortranslate code. Therefore, reference to execution of code, applicationcode, program code, or other software environment may refer to: (1)execution of a compiler program(s), optimization code optimizer, ortranslator either dynamically or statically, to compile program code, tomaintain software structures, to perform other operations, to optimizecode, or to translate code; (2) execution of main program code includingoperations/calls, such as application code that has beenoptimized/compiled; (3) execution of other program code, such aslibraries, associated with the main program code to maintain softwarestructures, to perform other software related operations, or to optimizecode; or (4) a combination thereof.

Referring now to FIG. 12, shown is a block diagram of an embodiment of amulticore processor. As shown in the embodiment of FIG. 12, processor1200 includes multiple domains. Specifically, a core domain 1230includes a plurality of cores 1230A-1230N, a graphics domain 1260includes one or more graphics engines having a media engine 1265, and asystem agent domain 1210.

In various embodiments, system agent domain 1210 handles power controlevents and power management, such that individual units of domains 1230and 1260 (e.g. cores and/or graphics engines) are independentlycontrollable to dynamically operate at an appropriate power mode/level(e.g. active, turbo, sleep, hibernate, deep sleep, or other AdvancedConfiguration Power Interface like state) in light of the activity (orinactivity) occurring in the given unit. Each of domains 1230 and 1260may operate at different voltage and/or power, and furthermore theindividual units within the domains each potentially operate at anindependent frequency and voltage. Note that while only shown with threedomains, understand the scope of the present invention is not limited inthis regard and additional domains may be present in other embodiments.As shown, each core 1230 further includes low level caches in additionto various execution units and additional processing elements. Here, thevarious cores are coupled to each other and to a shared cache memorythat is formed of a plurality of units or slices of a last level cache(LLC) 1240A-1240N; these LLCs often include storage and cache controllerfunctionality and are shared amongst the cores, as well as potentiallyamong the graphics engine too.

As seen, a ring interconnect 1250 couples the cores together, andprovides interconnection between the core domain 1230, graphics domain1260 and system agent circuitry 1210, via a plurality of ring stops1252A-1252N, each at a coupling between a core and LLC slice. As seen inFIG. 12, interconnect 1250 is used to carry various information,including address information, data information, acknowledgementinformation, and snoop/invalid information. Although a ring interconnectis illustrated, any known on-die interconnect or fabric may be utilized.As an illustrative example, some of the fabrics discussed above (e.g.another on-die interconnect, On-chip System Fabric (OSF), an AdvancedMicrocontroller Bus Architecture (AMBA) interconnect, amulti-dimensional mesh fabric, or other known interconnect architecture)may be utilized in a similar fashion.

As further depicted, system agent domain 1210 includes display engine1212 which is to provide control of and an interface to an associateddisplay. System agent domain 1210 may include other units, such as: anintegrated memory controller 1220 that provides for an interface to asystem memory (e.g., a DRAM implemented with multiple DIMMs; coherencelogic 1222 to perform memory coherence operations. Multiple interfacesmay be present to enable interconnection between the processor and othercircuitry. For example, in one embodiment at least one direct mediainterface (DMI) 1216 interface is provided as well as one or more PCIe™interfaces 1214. The display engine and these interfaces typicallycouple to memory via a PCIe™ bridge 1218. Still further, to provide forcommunications between other agents, such as additional processors orother circuitry, one or more other interfaces may be provided.

Referring now to FIG. 13, shown is a block diagram of a representativecore; specifically, logical blocks of a back-end of a core, such as core1230 from FIG. 12. In general, the structure shown in FIG. 13 includesan out-of-order processor that has a front end unit 1370 used to fetchincoming instructions, perform various processing (e.g. caching,decoding, branch predicting, etc.) and passing instructions/operationsalong to an out-of-order (OOO) engine 1380. OOO engine 1380 performsfurther processing on decoded instructions.

Specifically in the embodiment of FIG. 13, out-of-order engine 1380includes an allocate unit 1382 to receive decoded instructions, whichmay be in the form of one or more micro-instructions or uops, from frontend unit 1370, and allocate them to appropriate resources such asregisters and so forth. Next, the instructions are provided to areservation station 1384, which reserves resources and schedules themfor execution on one of a plurality of execution units 1386A-1386N.Various types of execution units may be present, including, for example,arithmetic logic units (ALUs), load and store units, vector processingunits (VPUs), floating point execution units, among others. Results fromthese different execution units are provided to a reorder buffer (ROB)1388, which take unordered results and return them to correct programorder.

Still referring to FIG. 13, note that both front end unit 1370 andout-of-order engine 1380 are coupled to different levels of a memoryhierarchy. Specifically shown is an instruction level cache 1372, thatin turn couples to a mid-level cache 1376, that in turn couples to alast level cache 1395. In one embodiment, last level cache 1395 isimplemented in an on-chip (sometimes referred to as uncore) unit 1390.As an example, unit 1390 is similar to system agent 1210 of FIG. 12. Asdiscussed above, uncore 1390 communicates with system memory 1399,which, in the illustrated embodiment, is implemented via ED RAM. Notealso that the various execution units 1386 within out-of-order engine1380 are in communication with a first level cache 1374 that also is incommunication with mid-level cache 1376. Note also that additional cores1330N-2-1330N can couple to LLC 1395. Although shown at this high levelin the embodiment of FIG. 13, understand that various alterations andadditional components may be present.

Turning to FIG. 14, a block diagram of an exemplary computer systemformed with a processor that includes execution units to execute aninstruction, where one or more of the interconnects implement one ormore features in accordance with one embodiment of the present inventionis illustrated. System 1400 includes a component, such as a processor1402 to employ execution units including logic to perform algorithms forprocess data, in accordance with the present invention, such as in theembodiment described herein. System 1400 is representative of processingsystems based on the PENTIUM III™, PENTIUM 4™, Xeon™, Itanium, XScale™and/or StrongARM™ microprocessors, although other systems (including PCshaving other microprocessors, engineering workstations, set-top boxesand the like) may also be used. In one embodiment, sample system 1400executes a version of the WINDOWS™ operating system available fromMicrosoft Corporation of Redmond, Wash., although other operatingsystems (UNIX and Linux for example), embedded software, and/orgraphical user interfaces, may also be used. Thus, embodiments of thepresent invention are not limited to any specific combination ofhardware circuitry and software.

Embodiments are not limited to computer systems. Alternative embodimentsof the present invention can be used in other devices such as handhelddevices and embedded applications. Some examples of handheld devicesinclude cellular phones, Internet Protocol devices, digital cameras,personal digital assistants (PDAs), and handheld PCs. Embeddedapplications can include a micro controller, a digital signal processor(DSP), system on a chip, network computers (NetPC), set-top boxes,network hubs, wide area network (WAN) switches, or any other system thatcan perform one or more instructions in accordance with at least oneembodiment.

In this illustrated embodiment, processor 1402 includes one or moreexecution units 1408 to implement an algorithm that is to perform atleast one instruction. One embodiment may be described in the context ofa single processor desktop or server system, but alternative embodimentsmay be included in a multiprocessor system. System 1400 is an example ofa ‘hub’ system architecture. The computer system 1400 includes aprocessor 1402 to process data signals. The processor 1402, as oneillustrative example, includes a complex instruction set computer (CISC)microprocessor, a reduced instruction set computing (RISC)microprocessor, a very long instruction word (VLIW) microprocessor, aprocessor implementing a combination of instruction sets, or any otherprocessor device, such as a digital signal processor, for example. Theprocessor 1402 is coupled to a processor bus 1410 that transmits datasignals between the processor 1402 and other components in the system1400. The elements of system 1400 (e.g. graphics accelerator 1412,memory controller hub 1416, memory 1420, I/O controller hub 1424,wireless transceiver 1426, Flash BIOS 1428, Network controller 1434,Audio controller 1436, Serial expansion port 1438, I/O controller 1440,etc.) perform their conventional functions that are well known to thosefamiliar with the art.

In one embodiment, the processor 1402 includes a Level 1 (L1) internalcache memory 1404. Depending on the architecture, the processor 1402 mayhave a single internal cache or multiple levels of internal caches.Other embodiments include a combination of both internal and externalcaches depending on the particular implementation and needs. Registerfile 1406 is to store different types of data in various registersincluding integer registers, floating point registers, vector registers,banked registers, shadow registers, checkpoint registers, statusregisters, and instruction pointer register.

Execution unit 1408, including logic to perform integer and floatingpoint operations, also resides in the processor 1402. The processor1402, in one embodiment, includes a microcode (ucode) ROM to storemicrocode, which when executed, is to perform algorithms for certainmacroinstructions or handle complex scenarios. Here, microcode ispotentially updateable to handle logic bugs/fixes for processor 1402.For one embodiment, execution unit 1408 includes logic to handle apacked instruction set 1409. By including the packed instruction set1409 in the instruction set of a general-purpose processor 1402, alongwith associated circuitry to execute the instructions, the operationsused by many multimedia applications may be performed using packed datain a general-purpose processor 1402. Thus, many multimedia applicationsare accelerated and executed more efficiently by using the full width ofa processor's data bus for performing operations on packed data. Thispotentially eliminates the need to transfer smaller units of data acrossthe processor's data bus to perform one or more operations, one dataelement at a time.

Alternate embodiments of an execution unit 1408 may also be used inmicro controllers, embedded processors, graphics devices, DSPs, andother types of logic circuits. System 1400 includes a memory 1420.Memory 1420 includes a dynamic random access memory (DRAM) device, astatic random access memory (SRAM) device, flash memory device, or othermemory device. Memory 1420 stores instructions and/or data representedby data signals that are to be executed by the processor 1402.

Note that any of the aforementioned features or aspects of the inventionmay be utilized on one or more interconnect illustrated in FIG. 14. Forexample, an on-die interconnect (ODI), which is not shown, for couplinginternal units of processor 1402 implements one or more aspects of theinvention described above. Or the invention is associated with aprocessor bus 1410 (e.g. other known high performance computinginterconnect), a high bandwidth memory path 1418 to memory 1420, apoint-to-point link to graphics accelerator 1412 (e.g. a PeripheralComponent Interconnect express (PCIe) compliant fabric), a controllerhub interconnect 1422, an I/O or other interconnect (e.g. USB, PCI,PCIe) for coupling the other illustrated components. Some examples ofsuch components include the audio controller 1436, firmware hub (flashBIOS) 1428, wireless transceiver 1426, data storage 1424, legacy I/Ocontroller 1410 containing user input and keyboard interfaces 1442, aserial expansion port 1438 such as Universal Serial Bus (USB), and anetwork controller 1434. The data storage device 1424 can comprise ahard disk drive, a floppy disk drive, a CD-ROM device, a flash memorydevice, or other mass storage device.

Referring now to FIG. 15, shown is a block diagram of a second system1500 in accordance with an embodiment of the present invention. As shownin FIG. 15, multiprocessor system 1500 is a point-to-point interconnectsystem, and includes a first processor 1570 and a second processor 1580coupled via a point-to-point interconnect 1550. Each of processors 1570and 1580 may be some version of a processor. In one embodiment, 1552 and1554 are part of a serial, point-to-point coherent interconnect fabric,such as a high-performance architecture. As a result, the invention maybe implemented within the QPI architecture.

While shown with only two processors 1570, 1580, it is to be understoodthat the scope of the present invention is not so limited. In otherembodiments, one or more additional processors may be present in a givenprocessor.

Processors 1570 and 1580 are shown including integrated memorycontroller units 1572 and 1582, respectively. Processor 1570 alsoincludes as part of its bus controller units point-to-point (P-P)interfaces 1576 and 1578; similarly, second processor 1580 includes P-Pinterfaces 1586 and 1588. Processors 1570, 1580 may exchange informationvia a point-to-point (P-P) interface 1550 using P-P interface circuits1578, 1588. As shown in FIG. 15, IMCs 1572 and 1582 couple theprocessors to respective memories, namely a memory 1532 and a memory1534, which may be portions of main memory locally attached to therespective processors.

Processors 1570, 1580 each exchange information with a chipset 1590 viaindividual P-P interfaces 1552, 1554 using point to point interfacecircuits 1576, 1594, 1586, 1598. Chipset 1590 also exchanges informationwith a high-performance graphics circuit 1538 via an interface circuit1592 along a high-performance graphics interconnect 1539.

A shared cache (not shown) may be included in either processor oroutside of both processors; yet connected with the processors via P-Pinterconnect, such that either or both processors' local cacheinformation may be stored in the shared cache if a processor is placedinto a low power mode.

Chipset 1590 may be coupled to a first bus 1516 via an interface 1596.In one embodiment, first bus 1516 may be a Peripheral ComponentInterconnect (PCI) bus, or a bus such as a PCI Express bus or anotherthird generation I/O interconnect bus, although the scope of the presentinvention is not so limited.

As shown in FIG. 15, various I/O devices 1514 are coupled to first bus1516, along with a bus bridge 1518 which couples first bus 1516 to asecond bus 1520. In one embodiment, second bus 1520 includes a low pincount (LPC) bus. Various devices are coupled to second bus 1520including, for example, a keyboard and/or mouse 1522, communicationdevices 1527 and a storage unit 1528 such as a disk drive or other massstorage device which often includes instructions/code and data 1530, inone embodiment. Further, an audio I/O 1524 is shown coupled to secondbus 1520. Note that other architectures are possible, where the includedcomponents and interconnect architectures vary. For example, instead ofthe point-to-point architecture of FIG. 15, a system may implement amulti-drop bus or other such architecture.

Turning next to FIG. 16, an embodiment of a system on-chip (SOC) designin accordance with the inventions is depicted. As a specificillustrative example, SOC 1600 is included in user equipment (UE). Inone embodiment, UE refers to any device to be used by an end-user tocommunicate, such as a hand-held phone, smartphone, tablet, ultra-thinnotebook, notebook with broadband adapter, or any other similarcommunication device. Often a UE connects to a base station or node,which potentially corresponds in nature to a mobile station (MS) in aGSM network.

Here, SOC 1600 includes 2 cores—1606 and 1607. Similar to the discussionabove, cores 1606 and 1607 may conform to an Instruction SetArchitecture, such as an Intel® Architecture Core™-based processor, anAdvanced Micro Devices, Inc. (AMD) processor, a MIPS-based processor, anARM-based processor design, or a customer thereof, as well as theirlicensees or adopters. Cores 1606 and 1607 are coupled to cache control1608 that is associated with bus interface unit 1609 and L2 cache 1611to communicate with other parts of system 1600. Interconnect 1610includes an on-chip interconnect, such as an IOSF, AMBA, or otherinterconnect discussed above, which potentially implements one or moreaspects of described herein.

Interconnect 1610 provides communication channels to the othercomponents, such as a Subscriber Identity Module (SIM) 1630 to interfacewith a SIM card, a boot rom 1635 to hold boot code for execution bycores 1606 and 1607 to initialize and boot SOC 1600, a SDRAM controller1640 to interface with external memory (e.g. DRAM 1660), a flashcontroller 1645 to interface with non-volatile memory (e.g. Flash 1665),a peripheral control 1650 (e.g. Serial Peripheral Interface) tointerface with peripherals, video codecs 1620 and Video interface 1625to display and receive input (e.g. touch enabled input), GPU 1615 toperform graphics related computations, etc. Any of these interfaces mayincorporate aspects of the invention described herein.

In addition, the system illustrates peripherals for communication, suchas a Bluetooth module 1670, 3G modem 1675, GPS 1685, and WiFi 1685. Noteas stated above, a UE includes a radio for communication. As a result,these peripheral communication modules are not all required. However, ina UE some form a radio for external communication is to be included.

While the present invention has been described with respect to a limitednumber of embodiments, those skilled in the art will appreciate numerousmodifications and variations therefrom. It is intended that the appendedclaims cover all such modifications and variations as fall within thetrue spirit and scope of this present invention.

A design may go through various stages, from creation to simulation tofabrication. Data representing a design may represent the design in anumber of manners. First, as is useful in simulations, the hardware maybe represented using a hardware description language or anotherfunctional description language. Additionally, a circuit level modelwith logic and/or transistor gates may be produced at some stages of thedesign process. Furthermore, most designs, at some stage, reach a levelof data representing the physical placement of various devices in thehardware model. In the case where conventional semiconductor fabricationtechniques are used, the data representing the hardware model may be thedata specifying the presence or absence of various features on differentmask layers for masks used to produce the integrated circuit. In anyrepresentation of the design, the data may be stored in any form of amachine readable medium. A memory or a magnetic or optical storage suchas a disc may be the machine readable medium to store informationtransmitted via optical or electrical wave modulated or otherwisegenerated to transmit such information. When an electrical carrier waveindicating or carrying the code or design is transmitted, to the extentthat copying, buffering, or re-transmission of the electrical signal isperformed, a new copy is made. Thus, a communication provider or anetwork provider may store on a tangible, machine-readable medium, atleast temporarily, an article, such as information encoded into acarrier wave, embodying techniques of embodiments of the presentinvention.

A module as used herein refers to any combination of hardware, software,and/or firmware. As an example, a module includes hardware, such as amicro-controller, associated with a non-transitory medium to store codeadapted to be executed by the micro-controller. Therefore, reference toa module, in one embodiment, refers to the hardware, which isspecifically configured to recognize and/or execute the code to be heldon a non-transitory medium. Furthermore, in another embodiment, use of amodule refers to the non-transitory medium including the code, which isspecifically adapted to be executed by the microcontroller to performpredetermined operations. And as can be inferred, in yet anotherembodiment, the term module (in this example) may refer to thecombination of the microcontroller and the non-transitory medium. Oftenmodule boundaries that are illustrated as separate commonly vary andpotentially overlap. For example, a first and a second module may sharehardware, software, firmware, or a combination thereof, whilepotentially retaining some independent hardware, software, or firmware.In one embodiment, use of the term logic includes hardware, such astransistors, registers, or other hardware, such as programmable logicdevices.

Use of the phrase ‘configured to,’ in one embodiment, refers toarranging, putting together, manufacturing, offering to sell, importingand/or designing an apparatus, hardware, logic, or element to perform adesignated or determined task. In this example, an apparatus or elementthereof that is not operating is still ‘configured to’ perform adesignated task if it is designed, coupled, and/or interconnected toperform said designated task. As a purely illustrative example, a logicgate may provide a 0 or a 1 during operation. But a logic gate‘configured to’ provide an enable signal to a clock does not includeevery potential logic gate that may provide a 1 or 0. Instead, the logicgate is one coupled in some manner that during operation the 1 or 0output is to enable the clock. Note once again that use of the term‘configured to’ does not require operation, but instead focus on thelatent state of an apparatus, hardware, and/or element, where in thelatent state the apparatus, hardware, and/or element is designed toperform a particular task when the apparatus, hardware, and/or elementis operating.

Furthermore, use of the phrases ‘to,’ ‘capable of/to,’ and or ‘operableto,’ in one embodiment, refers to some apparatus, logic, hardware,and/or element designed in such a way to enable use of the apparatus,logic, hardware, and/or element in a specified manner. Note as abovethat use of to, capable to, or operable to, in one embodiment, refers tothe latent state of an apparatus, logic, hardware, and/or element, wherethe apparatus, logic, hardware, and/or element is not operating but isdesigned in such a manner to enable use of an apparatus in a specifiedmanner.

A value, as used herein, includes any known representation of a number,a state, a logical state, or a binary logical state. Often, the use oflogic levels, logic values, or logical values is also referred to as 1'sand 0's, which simply represents binary logic states. For example, a 1refers to a high logic level and 0 refers to a low logic level. In oneembodiment, a storage cell, such as a transistor or flash cell, may becapable of holding a single logical value or multiple logical values.However, other representations of values in computer systems have beenused. For example the decimal number ten may also be represented as abinary value of 1010 and a hexadecimal letter A. Therefore, a valueincludes any representation of information capable of being held in acomputer system.

Moreover, states may be represented by values or portions of values. Asan example, a first value, such as a logical one, may represent adefault or initial state, while a second value, such as a logical zero,may represent a non-default state. In addition, the terms reset and set,in one embodiment, refer to a default and an updated value or state,respectively. For example, a default value potentially includes a highlogical value, i.e. reset, while an updated value potentially includes alow logical value, i.e. set. Note that any combination of values may beutilized to represent any number of states.

The embodiments of methods, hardware, software, firmware or code setforth above may be implemented via instructions or code stored on amachine-accessible, machine readable, computer accessible, or computerreadable medium which are executable by a processing element. Anon-transitory machine-accessible/readable medium includes any mechanismthat provides (i.e., stores and/or transmits) information in a formreadable by a machine, such as a computer or electronic system. Forexample, a non-transitory machine-accessible medium includesrandom-access memory (RAM), such as static RAM (SRAM) or dynamic RAM(DRAM); ROM; magnetic or optical storage medium; flash memory devices;electrical storage devices; optical storage devices; acoustical storagedevices; other form of storage devices for holding information receivedfrom transitory (propagated) signals (e.g., carrier waves, infraredsignals, digital signals); etc, which are to be distinguished from thenon-transitory mediums that may receive information there from.

Instructions used to program logic to perform embodiments of theinvention may be stored within a memory in the system, such as DRAM,cache, flash memory, or other storage. Furthermore, the instructions canbe distributed via a network or by way of other computer readable media.Thus a machine-readable medium may include any mechanism for storing ortransmitting information in a form readable by a machine (e.g., acomputer), but is not limited to, floppy diskettes, optical disks,Compact Disc, Read-Only Memory (CD-ROMs), and magneto-optical disks,Read-Only Memory (ROMs), Random Access Memory (RAM), ErasableProgrammable Read-Only Memory (EPROM), Electrically ErasableProgrammable Read-Only Memory (EEPROM), magnetic or optical cards, flashmemory, or a tangible, machine-readable storage used in the transmissionof information over the Internet via electrical, optical, acoustical orother forms of propagated signals (e.g., carrier waves, infraredsignals, digital signals, etc.). Accordingly, the computer-readablemedium includes any type of tangible machine-readable medium suitablefor storing or transmitting electronic instructions or information in aform readable by a machine (e.g., a computer).

Reference throughout this specification to “one embodiment” or “anembodiment” means that a particular feature, structure, orcharacteristic described in connection with the embodiment is includedin at least one embodiment of the present invention. Thus, theappearances of the phrases “in one embodiment” or “in an embodiment” invarious places throughout this specification are not necessarily allreferring to the same embodiment. Furthermore, the particular features,structures, or characteristics may be combined in any suitable manner inone or more embodiments.

In the foregoing specification, a detailed description has been givenwith reference to specific exemplary embodiments. It will, however, beevident that various modifications and changes may be made theretowithout departing from the broader spirit and scope of the invention asset forth in the appended claims. The specification and drawings are,accordingly, to be regarded in an illustrative sense rather than arestrictive sense. Furthermore, the foregoing use of embodiment andother exemplarily language does not necessarily refer to the sameembodiment or the same example, but may refer to different and distinctembodiments, as well as potentially the same embodiment.

1-50. (canceled)
 51. A processor device comprising: physical layer logicto: enter a loopback state of a state machine; generate, using a linearfeedback shift register, a loopback pattern comprising a pseudo randombit sequence (PRBS); transmit the loopback pattern to another processordevice over a physical connection, wherein an instance of the loopbackpattern is to also be generated by the other processor device, and theloopback pattern is transmitted according to a first setting oftransmitter parameters of the processor device; adjust the first settingof transmitter parameters of the processor device based on metricsgenerated based on a comparison by the other processor device of theloopback pattern received by the other processor and the instance of theloopback pattern generated by the other processor device, whereinadjusting the first setting of transmitter parameters results in asecond setting of transmitter parameters of the processor device;transmit another instance of the loopback pattern to the other processordevice according to the second setting of transmitter parameters of theprocessor device.
 52. The processor device of claim 51, wherein thephysical layer logic is further to: receive the instance of the loopbackpattern generated by the other processor device; compare the receivedinstance of the loopback pattern with the loopback pattern generatedlocally at the processor device; and determine a particular metric basedon comparison of the received instance of the loopback pattern with theloopback pattern generated locally at the processor device, whereintransmitter parameters of the other processor device are to be adjustedbased on the particular metric.
 53. The processor device of claim 51,wherein the loopback pattern comprises an electrical ordered set (EOS).54. The processor device of claim 53, wherein the loopback patternfurther comprises a series of training sequences.
 55. The processordevice of claim 54, wherein the series of training sequences comprises apredefined number of training sequences.
 56. The processor device ofclaim 55, wherein the predefined number of training sequences comprisethirty training sequences.
 57. The processor device of claim 54, whereinthe loopback pattern comprises a repeating pattern of the EOS and seriesof training sequences.
 58. The processor device of claim 53, wherein theEOS comprises an electrical idle exit ordered set (EIEOS).
 59. Theprocessor device of claim 58, wherein: the EIEOS comprises a 16 byteordered set, bytes 0, 2, 4, 6, 8, 10, 12, and 14 of the EIEOS comprise avalue 8′h00, and bytes 1, 3, 5, 7, 9, 11, 13, and 15 of the EIEOScomprise a value 8′hFF.
 60. The processor device of claim 51, whereinthe metrics are to be received over a backchannel.
 61. The processordevice of claim 60, wherein the backchannel comprises asoftware-implemented backchannel.
 62. The processor device of claim 61,wherein the software-implemented backchannel utilizes a slow mode of anembedded clock for the physical connection.
 63. An apparatus comprising:a controller associated with a first processor to interface between thefirst processor to recognize a first instruction set and a secondprocessor to recognize a second instruction set that is different fromthe first instruction set, the controller comprising protocol layerlogic, link layer logic, and physical layer logic, the physical layerlogic to: send a supersequence to the second processor over aninterconnect, wherein the supersequence indicates a loopback state,transmitter adaptation is to be performed in the loopback state, thesupersequence comprises a series of training sequences, and one or moreof the training sequences in the series comprise: a training sequencetype field to indicate the loopback state, and a loopback master bit toindicate that the first processor is to serve as master in thetransmitter adaptation; generate, using a linear feedback shiftregister, a loopback pattern comprising a pseudo random bit sequence(PRBS); transmit the loopback pattern to the second processor over theinterconnect, wherein the loopback pattern is to be sent according tofirst transmitter parameter settings; examine a metric generated at thesecond processor based on receipt of the loopback pattern at the secondprocessor; identify second transmitter parameter settings based on themetric; and transmit the loopback pattern to the second processor overthe interconnect, wherein the loopback pattern is to be sent accordingto second transmitter parameter settings.
 64. The apparatus of claim 63,wherein the PRBS is a 23 bit PRBS.
 65. The apparatus of claim 64,wherein the PRBS is to be generated using a Fibonacci linear feedbackshift register (LFSR).
 66. The apparatus of claim 63, wherein the PRBScomprises a control supersequence and at least a portion of thesupersequence is scrambled using the PRBS.
 67. The apparatus of claim66, wherein the supersequence comprises a repeating sequence includingan electric idle exit ordered set (EIEOS), wherein the sequence is to berepeated according to a particular predefined frequency.
 68. Theapparatus of claim 67, wherein the sequence includes a defined number oftraining sequences following the EIEOS.
 69. A method comprising: sendinga supersequence to the second processor over an interconnect, whereinthe supersequence indicates a loopback state, transmitter adaptation isto be performed in the loopback state, the supersequence comprises aseries of training sequences, and one or more of the training sequencesin the series comprise: a training sequence type field to indicate theloopback state, and a loopback master bit to indicate that the firstprocessor is to serve as master in the transmitter adaptation;generating, using a linear feedback shift register, a loopback patterncomprising a pseudo random bit sequence (PRBS); transmitting theloopback pattern to the second processor over the interconnect, whereinthe loopback pattern is to be sent according to first transmitterparameter settings; examining a metric generated at the second processorbased on receipt of the loopback pattern at the second processor;identifying second transmitter parameter settings based on the metric;and transmitting the loopback pattern to the second processor over theinterconnect, wherein the loopback pattern is to be sent according tosecond transmitter parameter settings.
 70. A system comprising: a firstprocessor; and a second processor coupled to the first processor deviceby a link, wherein the second processor device comprises physical layerlogic to: enter a loopback state of a state machine; generate, using alinear feedback shift register, a first instance of a loopback patterncomprising a pseudo random bit sequence (PRBS); receive a secondinstance of the loopback pattern from the first processor over the link;compare the second instance with the first instance of the loopbackpattern; generate a metric based on comparison of the second instancewith the first instance of the loopback pattern, wherein the metric isto be used to adapt transmitter parameter settings of the firstprocessor.
 71. The system of claim 70, wherein the first processorcomprises physical layer logic to generate the PRBS.
 72. The system ofclaim 71, wherein the physical layer logic of the second processor isfurther to send the first instance of the loopback pattern to the firstprocessor.
 73. The system of claim 72, wherein the physical layer logicof the first processor is further to: receive the first instance of theloopback pattern from the second processor over the link; compare thefirst instance with the second instance of the loopback pattern;generate a metric based on comparison of the first instance with thesecond instance of the loopback pattern, wherein the metric is to beused to adapt transmitter parameter settings of the second processor.74. A system comprising: means for sending a supersequence to the secondprocessor over an interconnect, wherein the supersequence indicates aloopback state, transmitter adaptation is to be performed in theloopback state, the supersequence comprises a series of trainingsequences, and one or more of the training sequences in the seriescomprise: a training sequence type field to indicate the loopback state,and a loopback master bit to indicate that the first processor is toserve as master in the transmitter adaptation; means for generating,using a linear feedback shift register, a loopback pattern comprising apseudo random bit sequence (PRBS); means for transmitting the loopbackpattern to the second processor over the interconnect, wherein theloopback pattern is to be sent according to first transmitter parametersettings; means for examining a metric generated at the second processorbased on receipt of the loopback pattern at the second processor; meansfor identifying second transmitter parameter settings based on themetric; and means for transmitting the loopback pattern to the secondprocessor over the interconnect, wherein the loopback pattern is to besent according to second transmitter parameter settings.